我在联系表单上有一个单选按钮,有人可以在其中选择 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] 选择一个单选按钮值,则该值会正确填充,但在显示视图时不会选中单选按钮。例如,如果我选择用途并为三个文本字段输入值,则文本字段的值仍在表单上,但未选中单选按钮,即使用途具有值。
我找到了这个链接提交表单后如何设置单选按钮的值?并在我的控制器中开发了以下代码:
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 一起使用。
任何帮助,将不胜感激。我会继续寻找。
更新:3012 年 4 月 4 日上午 11:15 CST
现在正在检查我的单选按钮。按照 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' %>