誰かが 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' %>
フォームに 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' %>