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' %>

フォームに 6 つのテキスト フィールドを持つラジオ ボタンがあります。フォームの上部にあるラジオボタンから始めて、コントローラーのフィールドごとにエラーチェックを行います。エラー チェックは、すべてのフィールドを正しくチェックしています。ただし、params[:purpose] のラジオ ボタン値の 1 つを選択すると、値は適切に入力されますが、ビューが表示されたときにラジオ ボタンがチェックされません。たとえば、目的を選択して 3 つのテキスト フィールドに値を入力すると、テキスト フィールドの値はフォームに表示されたままですが、目的に値が設定されていてもラジオ ボタンはオフになります。

このリンクを見つけましたフォームを送信した後にラジオボタンの値を設定する方法は? 私のコントローラーで次のコードを開発しました:

  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

以下は、ナマズの提案に従って書き直したビュー コードです。

    <%= 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