0

Ruby1.9.2 Rails3.2

次のコードは、次のHTMLコードを生成します。

<%= form_tag :controller => "index", :action => "index" do %>
<%= select_tag(:area_id,
options_from_collection_for_select(@areas, :id, :area_name, @area_id),
 :onchange => "this.form.submit()") %>
<% end %>


<form accept-charset="UTF-8" action="/area/2" method="post">
    <select id="area_id" name="area_id" onchange="this.form.submit()">
      <option value="1">Japan</option>
      <option value="2" selected="selected">Thailand</option>
      <option value="3">USA</option>
      <option value="4">Canada</option>
      <option value="5">England</option>
    </select>
</form>

選択ボックスを変更すると、onchangeイベントが発生します。ただし、フォームアクションの値は「/ area/2」をそのまま変更しません。/ area / 1を選択しても、変更されません。

onchangeイベントが発生したときに、アクションの値をどのように変更するかを知りたいです。

4

1 に答える 1

1

これは、app / Assets/javascriptsディレクトリにあるjsファイルの1つにjavascriptコードを配置することで実行できます。select_tag呼び出しでonchangeオプションを削除した後、これで対処する必要があります。

$(function() {
  $('#area_id').change(function() {
    $(this).parent().attr('action', '/area/' + $(this).val());
  });
});

ビューまたはレイアウトがjavascript_include_tagメソッドを介してアプリケーションファイルをロードする限り、問題はありません。

変更イベントでフォームを送信する代わりに、ボタンを追加することをお勧めします。誰かが必要な値を誤って選択した場合に備えて、戻るボタンを押す必要はありません。

于 2012-08-23T14:44:22.783 に答える