2014-03-13 76 views
0

我是Ruby on Rails的新手,我试图做一些并不那么复杂的事情,经过至少4个小时的研究,我开始认为Ruby不是那么神奇。 ..嵌套单选按钮

我有一个与模型链接的嵌套窗体。有一个属于“问题”表的“答案”表。答案有一个“名字”和一个“正确”字段(布尔)。现在我有一个形式和

这是一个循环(HAML)内:

= builder.radio_button :correct, true

所以产生每场的用户可以填写一个单选按钮。它的工作原理和它填补了“答案”表(这是“建设者”这里)的“正确”字段

事实上单选按钮与“名称”HTML属性一起工作,RoR也使用它来链接所有与模型。我想让只有一个单选按钮组,并与每个单选按钮一组......结束了

插图:

enter image description here

于是我开始尝试像

= builder.radio_button :correct, true, :name => "answers[correct]"

东西

现在问题不在于HTML,因为按钮来自一个组。 RoR不理解如何将它与模型链接起来......是否有任何解决方案来制作单选按钮组,并且不会丢失将模型与模型链接起来的“智能”系统?

另一个例证:

enter image description here

谢谢,这已经有一段时间我在寻找......

+0

当提交表单时'params'看起来像什么? '答案[正确]',因为按钮的名字对我来说看起来有点可疑。似乎应该像'答案[] [正确]'或'答案[(这里有一些索引)] [正确]' –

+0

我检查了参数,并得到了我下面解释的想法感谢你:) –

回答

0

所以没有办法与RoR的系统自动做到这一点,但我得到了一个很好的解决方案。

我改变了我的代码视图(HAML)是这样的:

= answer.label :correct, "It's the correct answer", :value => answer.options[:child_index] 
= answer.radio_button :correct, answer.options[:child_index], name: "question[answers_attributes][correct]" 

在我question_controller我只是把这个:

right_answer = params[:question][:answers_attributes][:correct] 
params[:question][:answers_attributes][right_answer][:correct] = true 

params[:question][:answers_attributes].delete :correct 

它得到正确的PARAMS和内transfert它在循环之后纠正一个。奇迹般有效。如果任何人有嵌套单选按钮组的问题,这里有一个解决方案:)