如何保存和显示嵌套模型的单选按钮参数?

时间:2013-08-18 14:49:52

标签: ruby-on-rails ruby-on-rails-3

我有3个模型,调查 - 问题 - 答案,每个has_many / belongs_to relation。

这是输入表格。

<ol>
  <% @questions.each do |question| %>
    <%= simple_fields_for "questions[#{question.id}]" do |builder| %>
        <li>
          <%= builder.input :answer, :collection => question.answers, :as => :radio_buttons,
               :label_method => :content, :value_method => :id, :label => question.content %>
        </li>
    <% end %>
  <% end %>
</ol>

我意识到radio_buttons在日志中运行良好。

  Parameters: {"survey_id"=>"23", "commit"=>"Submit Exam", "questions"=>{"8"=>{"answer"=>"28"}, "7"=>{"answer"=>"24"}, "6"=>{"answer"=>"21"}}, "authenticity_token"=>"m/16DAjhDrEH3/8fzJLDeiqi/d+VkZJiOeqK5TuLpSw=", "utf8"=>"✓"}

我可以像这样在控制器中获取create方法中的每个值。到目前为止一切顺利。

@checked_answers = params[:questions]

我想在show view中显示用户的输入。但是我不能在show方法中使用@checked_answers值。我想我必须将它保存在DB中,也许我必须在DB表中创建另一个列来保存@checked_answers。但这不是一个简单的数据!(比如字符串或整数......)有没有什么好方法可以避免在DB中保存数据?如果我可以直接在show视图中使用params,那么所有问题都可以解决!

1 个答案:

答案 0 :(得分:0)

是的,你可以,你这样做了:

@checked_answers = params[:questions]

现在你在@checked_answers

中有这个
{"8"=>{"answer"=>"28"}, "7"=>{"answer"=>"24"}, "6"=>{"answer"=>"21"}}

在您的观点中执行此操作:

@checked_answers.each_with_index do |ques, answer|
   "Question No #{ques}"

   "Correct Answer #{answer}"

或者如果这些是问题的ids&amp;答案,你也可以在你的数据库中找到它们。

由于