Rails select_tag の onchangeイベントによる form_tag action属性の変更

2012年8月24日 Posted by PURGE

セレクトボックスを変更したタイミングでサブミットを呼びたいので、下記のように記述した。
form_tagとselect_tag を使用すると、下記の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>

しかし、この方法だけだと、formの属性であるactionが、/area/2 のまま変わらない。
色々と試したが、javascriptで対応するしかないようだ。

<script type="text/javascript">
$(function(){
	$('#area_id').change(function() {
		$("form").attr('action', '/areas/' + $(this).val());
		$("form").submit();
	});
});
</script>

Javascriptで、formのactionを変更してsubmitする。
もう少しスマートな方法もありそうだが、これで良しとする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です