2016-09-20 118 views
0

好的,这是我的代码。如何将自定义属性添加到form_for?

<%= form_for @quiz do |f|%> 
    <% @questions.shuffle.each do |q| %> 
    # get_answers returns an array of 4 random answers 
    <% answers = q.get_answers %> 
    <%= f.label q.inquest %><br> 
    <% answers.each do |a| %> 
     <%= f.radio_button <need help here!>, a %> 
     <%= f.label <need help here!>, a %><br> 
     <%= f.hidden_field <need help here!>, q.id %> 
    <% end %> 
    <% end %> 
<% end %> 

我测验表具有属性

concept_id 
user_id 

我怎么添加自定义属性,我可以有在后的动作获得?它应该是动态的,因此它可以随着有多少问题进行扩展。我想要这样的东西给我的参数。

{ 
    user_answers: { 
    question1: { 
     :question_id 
     :answer 
    { 
    } 
} 

根据有多少问题存在,它会去像问题1,2,3,4等。

的hidden_​​field将与question_id携带而radio_button将携带的答案。我不需要它来保存或任何东西,我只需要访问它们

+0

您好,欢迎堆栈溢出。酷 - 看起来不错..所以我会开始使用'each_with_index'(所以你知道你的答案),并使用索引作为表单字段的名称的一部分。例如'<%= f.hidden_​​field“question_id _#{idx}”,:value => q.id%>' –

+0

谢谢!我只是补充说,我还为单选按钮添加了'<%= f.radio_button“answer#{index + 1}”,%>',但是我收到了未定义的方法错误。这是因为''answer#{index + 1}“'不是@quiz的属性。我如何得到这个工作? – LeongZeno

+0

正如你所见,你可以使用'_tag'版本而不只是'form_for'版本:) –

回答

1

好的,所以我意识到我不应该在f上调用这些表单标签。而不是让他们为自己的表单标签

比如:f.radio_button

radio_button_tag,而不是

相关问题