轨道+ radio_button_tag

时间:2011-08-08 14:32:41

标签: ruby-on-rails forms

在下面的代码中,我使用单选按钮从三个选项中选择一个选项,

但是,由于一个单选按钮的名称与其他单选按钮不同,我可以选择所有三个选项而不是一个

我使用此代码是因为,我想更新包含文本框中所有三个名称的记录及其对应的选定值,

还有其他工作要做吗

查看

<% 1.upto(3) do |i| %>
<%= text_field_tag "fields[#{i}][name]",'' %>
<%= radio_button_tag "fields[#{i}][answer]", '1', false%>
<% end %>

控制器

params[:fields].each do |i, values|
u = Sample.new
u.name = values["name"]
u.answer = values["answer"] ? 1 : 0
u.save
end

感谢,

2 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

<% 1.upto(3) do |i| %>
    <%= text_field_tag "fields[#{i}][name]",'' %>
    <%= radio_button_tag "fields[answer]", '#{i}', false%>
<% end %>

这将产生一个值为1,2或3的答案字段,具体取决于选择的字段。

答案 1 :(得分:1)

首先,嵌套属性可能非常适合您的问题。我建议调查那些而不是你现在接近的方式。

如果你想按照他们的方式坚持下去,你可以通过几次调整来使事情发生。

要使单选按钮正常工作,您需要为每个选项使用唯一值(i):

<%= radio_button_tag "answer", i, false%>

然后在您的控制器中

u.answer = params["answer"] == i ? 1 : 0