Ruby on rails 与其父实例同时创建子实例
我正在尝试创建一个轮询系统:Ruby on rails 与其父实例同时创建子实例,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在尝试创建一个轮询系统: # models class Poll < ActiveRecord::Base has_many :answers end class Answer < ActiveRecord::Base belongs_to :poll end # routes resources :polls do resources :answers end 但似乎应该有更好的办法。我不反对取消整个设置,或者将问题放在Poll上的数组属性中。但是还有计票的问
# models
class Poll < ActiveRecord::Base
has_many :answers
end
class Answer < ActiveRecord::Base
belongs_to :poll
end
# routes
resources :polls do
resources :answers
end
但似乎应该有更好的办法。我不反对取消整个设置,或者将问题放在
Poll
上的数组属性中。但是还有计票的问题。看看Rails接受
()的嵌套属性,特别是链接的一对多部分。它将允许您创建一个投票
,并同时创建任意多个答案
s。前面的注释就是方法。在这样做的过程中,检查一下以使您的生活更轻松。@james00794看起来很完美,谢谢!
def create
@poll = @poll.create(poll_params)
if @poll.save
if params[:poll_answer1].present?
@poll.answers.create!(answer: params[:poll_answer1])
end
if params[:poll_answer2].present?
@poll.answers.create!(answer: params[:poll_answer2])
end
flash[:notice] = "Poll created."
redirect_to @poll
else
flash[:error] = "Poll could not be created."
render :new
end
end