1

2 つのデータベース属性 (と) を持つモデルがあり、両方とも がありAttendanceます。Boolean:late:absent:default => false

単純に 2 つのラジオ ボタンを持つフォームを作成しようとしています。1 つは遅刻、もう 1 つは欠席です。もちろん、ユーザーは 2 つのうちの 1 つだけを選択できます。

非常に多くのバリエーションを試しましたが、何も機能しません。

誰か手を貸してくれませんか?コレクションを簡単に選択できることはわかっていますが、ラジオ ボタンはユーザー エクスペリエンスに役立ちます。また、さまざまな理由から db スキーマを維持する必要があります...

どうもありがとう!!!

4

2 に答える 2

5

すぐに必要な機能をサポートする Rails ヘルパーを認識していません。モデルが遅れたり欠席したりせずに誤ってクリックされた場合、ユーザーはどちらのラジオボタンも選択解除できないため、使い勝手にも疑問があります。

それはさておき、radio_button_tag を使用して 2 つのオプションを提供し、コントローラーでそれに応じてパラメーターを更新します。基本的な例を次に示します。

<%= form_tag('/your/path') do %>
  <%= radio_button_tag :status, 'late' %>
  <%= label_tag :status_late, 'Late' %>
  <%= radio_button_tag :status, 'absent' %>
  <%= label_tag :status_absent, 'Absent' %>
  <%= submit_tag :submit %>
<% end %>

もちろん、必要な他のフィールドがあれば、コントローラーで次のようになります。

def create
  case params[:status]
  when 'late'
    params[:model_name][:late] = true
  when 'absent'
    params[:model_name][:absent] = true
  end

  ModelName.new(params[:model_name])
end

それらの線に沿った何かがうまくいくはずです。

于 2012-10-18T19:55:11.373 に答える
1
@options = ["Late", "Absent"]
@selected_options = ""

<% @options.each do |option| %>
    <%=  radio_button_tag 'attendance_radio', option, option == @selected_option %> <%= label_tag 'name', option %> <br />
<% end %>

選択したラジオを保存しますattendance_radio

フォーム内の値を実際に選択した値以外のもの (遅延、不在) にしたい場合は、2 番目のパラメーターをいじって、boolean代わりにa を保持することができます。

于 2012-10-18T19:11:49.243 に答える