如何在Rails中更改form_tag onchange事件select_tag的动作值

时间:2012-08-23 10:40:02

标签: ruby-on-rails

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事件发生时我如何更改操作的值。

1 个答案:

答案 0 :(得分:1)

这可以通过将一些javascript代码放在app / assets / javascripts目录中的一个js文件中来完成。在select_tag调用中删除onchange选项后,应该注意它:

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

只要你的视图或布局通过javascript_include_tag方法加载应用程序文件,你就应该好了。

虽然没有在更改事件中提交表单,但我建议只添加一个按钮,以防有人误选他们想要的值,他们不必点击后退按钮或者你是什么。