我在联系表单上有一个单选按钮,有人可以从中选择5个值中的1个。我没有单选按钮的默认值。我使用的是form_tag,因为这些数据不会存储在数据库中。
以下是单选按钮的代码:
<%= label_tag "Purpose:" %>
<%= radio_button_tag :purpose, '1' %><%= label_tag :purpose_feedback, 'Suggestions' %>
<%= radio_button_tag :purpose, '2' %><%= label_tag :purpose_prayer, 'Prayer Request' %>
<%= radio_button_tag :purpose, '3' %><%= label_tag :purpose_praise, 'Testimony' %>
<%= radio_button_tag :purpose, '4' %><%= label_tag :purpose_bug, 'Defects/Bugs' %>
<%= radio_button_tag :purpose, '5' %><%= label_tag :purpose_other, 'Other' %>
我的单选按钮上有六个文本字段。我在控制器中逐字段进行错误检查,从窗体顶部的单选按钮开始。错误检查正确检查我的所有字段。但是,如果我为params [:purpose]选择一个单选按钮值,则会正确填充该值,但在显示视图时不会选中单选按钮。例如,如果我选择目的并输入三个文本字段的值,则文本字段的值仍在表单上,但即使目的具有值,也会取消选中单选按钮。
我找到了这个链接How to set the value of radio button after submitting form?并在我的控制器中开发了以下代码:
def check_radio_button
case params[:purpose]
when '1'
radio_button_tag(:purpose, '1', :checked => true)
when '2'
radio_button_tag(:purpose, '2', :checked => true)
when '3'
radio_button_tag(:purpose, '3', :checked => true)
when '4'
radio_button_tag(:purpose, '4', :checked => true)
when '5'
radio_button_tag(:purpose, '5', :checked => true)
end
end
当我尝试显示我的视图时选择第一个单选按钮(目的='1')我收到以下错误:
undefined method `radio_button_tag' for #<PagesController:0x007f94d05c5e88>
它出错的行是params [:purpose] == 1表示正确填充目的的那一行。
有关检查单选按钮的其他示例与form_for一起使用,其中数据库已更新。
任何帮助将不胜感激。我会继续寻找。
更新时间:4/4/3012美国中部时间上午11:15
现在正在检查我的单选按钮。我按照Mischa的建议将纠正后的逻辑移到了帮助者身上。
这是我的帮助代码:
def check_radio_button (purpose)
if params[:purpose].blank?
radio_button_tag(:purpose, purpose)
elsif purpose == params[:purpose]
radio_button_tag(:purpose, purpose, :checked => true)
else
radio_button_tag(:purpose, purpose)
end
end
这是我根据Catfish建议重写的视图代码:
<%= check_radio_button("1") %><%= label_tag :purpose_feedback, 'Suggestions' %>
<%= check_radio_button("2") %><%= label_tag :purpose_prayer, 'Prayer Request' %>
<%= check_radio_button("3") %><%= label_tag :purpose_praise, 'Testimony' %>
<%= check_radio_button("4") %><%= label_tag :purpose_bug, 'Defects/Bugs' %>
<%= check_radio_button("5") %><%= label_tag :purpose_other, 'Other' %>
答案 0 :(得分:0)
您的问题是radio_button_tag
不是您的控制器中使用的功能。您发布的链接在帮助程序中包含radio_button_tag。
重新阅读您发布的问题,然后重试。
基本上你创建了一个帮助方法来渲染check_box_tag,然后在视图中调用该辅助方法:
示例助手
def my_check_box_tag(my_param) do
....
end
在我看来
<%= my_check_box_tag("test") %>