0

我在联系表单上有一个单选按钮,有人可以在其中选择 5 个值中的 1 个。我没有单选按钮的默认值。我正在使用 form_tag,因为这些数据不会存储在数据库中。

这是我的单选按钮代码:

    <%= label_tag "Purpose:" %>&nbsp;
    <%= 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' %>
4

1 回答 1

0

您的问题是这radio_button_tag不是您的控制器中使用的功能。您发布的链接在帮助程序中有 radio_button_tag。

重新阅读您发布的问题,然后再试一次。

基本上,您创建一个呈现 check_box_tag 的辅助方法,然后在视图中调用该辅助方法:

示例助手

def my_check_box_tag(my_param) do
  ....
end

在我看来

<%= my_check_box_tag("test") %>
于 2013-04-04T15:08:59.600 回答