1

RoR初心者です。新しいレコードを作成するときに、ラジオ ボタンのデフォルトを初めて選択する方法を知りたいですか?

私は試した

<%= radio_button_tag 'scheduler', 'now', true%> Now <br>
<%= radio_button_tag 'scheduler', 'future'%> Future<br> 

最初のラジオ ボタン (現在の値を持つ) がチェックされますが、2 番目のラジオ ボタン (未来) を選択し、フォームの他の必須フィールドを空白のままにすると、2 番目ではなく最初のラジオが選択されます。

これを解決する方法。

注:フィールド "scheduler" は、このフォームの単なる仮想フィールドであり、"Future" オプションが選択され、その datetimepicker フィールド "schedule_date" がモデルの実際のフィールドである場合、datetimepicker を含む別の HTML が表示されます。オプション "Now" がポストされた場合、単純に現在の日付と時刻がそのフィールド "schedule_date" のデータベース テーブルに保存されます。したがって、これらのラジオ ボタンを使用して HTML を表示/非表示にするだけです。

4

3 に答える 3

2

「必須フィールドを空白のままにしてください」と言うとき、フォームを送信して、サーバーから編集フォームを警告フラッシュで取得していると思いますか? ここで必要なことは、Now フィールドを true に設定する代わりに、新しいフォームを作成するときに変数を使用して true に設定することです。次に、フォームをサーバーに送信すると、コントローラーの create メソッドは params ハッシュを調べて変数を設定し、送信が検証に失敗した場合は、Now 変数が false に設定され、Future 変数が true に設定された編集フォームを返す必要があります。

したがって、コントローラーのcreateメソッドには次のようなものがあります

@now = params[:scheduler][:now]

あなたが持っているコントローラの新しいメソッドで:

@now = true

そしてビューで:

    <%= radio_button_tag 'scheduler', 'now', @now%> Now <br>
<%= radio_button_tag 'scheduler', 'future', !@now %> Future<br> 
于 2013-02-13T07:59:27.040 に答える
0

これは、最初のラジオ ボタンがデフォルトで選択されるように設定しているためです。したがって、2 番目のラジオ ボタンを選択してからフォームを更新/送信すると、ページは元の位置に移動し、前に選択した 2 番目のボタンが失われます。

これは、フォーム フィールドに入力してからフォームを更新するか、フォームに戻った後に再びフォームに戻ると、以前に入力したデータが失われるのと同じです。

解決:

チェック済みのラジオボタンの値を取得し、jqueryを使用して設定すると言います-

    $('input[name="myradios"]').change(function() {
             alert($(this).val());
    });
于 2013-02-13T08:06:17.233 に答える
0

試す:

<%= radio_button_tag 'scheduler', 'now', true %> Now <br>
<%= radio_button_tag 'scheduler', 'future', params[:scheduler].eql?("future") %> Future<br> 
于 2013-02-13T08:18:22.177 に答える