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

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

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

只要您的视图或布局通过该javascript_include_tag方法加载应用程序文件,您就可以开始了。

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

于 2012-08-23T14:44:22.783 回答