我在我的第一个Rails应用程序中使用嵌套模型,现在我遇到了一个问题。我有一个调查模型,has_many :questions,这反过来又是belongs_to :survey和模型问题has_many :answers。我的回答模型是belongs_to :问题。
现在,我想更新一个布尔属性:我的:答案控制器中的猜测。为此,我创建了一个新的动作:quiz_guess,如下所示:
def quiz_guess
Answer.update(params[:id], guess: false)
puts("Guess saved")
redirect_to(:action => 'show', :id => @survey.next, :survey_id => @survey.id)
end我的看法如下:
<%= form_tag quiz_guess_questions_path, :method => :put do %>
<% for question in @survey.questions do %>
<li><%= h question.content %></li>
<% for answer in question.answers do %>
<li><%= h answer.content %>
<%= form_for :guess do |f| %>
<%= f.check_box(:guess, :method => :put) %>
<% end %>
</li>
<% end %>
<% end %>
<% end %>显然,我已经阅读了文档以及这个博客帖子,但是我不知道如何在控制器和视图中实现它。
使用此代码,我无法更新正确的:猜测属性,而是更新不同的属性(使用不同的:id)。有人能说明我做错了什么吗?
发布于 2015-06-14 11:19:21
最后,我看了这个铁道,Ryan展示了如何用fields_for更新多个属性。这是我的新观点:
<%= form_tag quiz_guess_questions_path, :method => :put do %>
<% for question in @survey.questions do %>
<li><%= question.content %></li>
<% for answer in question.answers do %>
<li>
<%= fields_for "answers[]", answer do |f| %>
<%= answer.content %>
<%= f.check_box :guess %>
<% end %>
</li>
<% end %>
<% end %>
<%= submit_tag "Guess" %>
<% end %>我的新掌门人:
def quiz_guess
Answer.update(params[:answers].keys, params[:answers].values)
flash[:notice] = "Guess saved successfully."
redirect_to questions_url
endhttps://stackoverflow.com/questions/30737300
复制相似问题