如何在HTML选择中更改所选项目时处理事件

时间:2010-01-11 15:17:51

标签: javascript html ruby-on-rails ruby select

我目前有两个Ruby选择:一个用于类别,另一个用于子类别。正如您所预料的那样,第二个必须在每次第一个更改时自行更新。

例如,如果我从第一个选择“运动”类别,则第二个选择应加载所有运动。

如何处理“索引更改”事件?有“红宝石方式”还是我必须使用javascript?

谢谢, 布赖恩

1 个答案:

答案 0 :(得分:2)

您必须至少使用一些JavaScript。在jQuery中,您可以这样做:

$(document).ready(function(){
    $('#first-select').change(function(){
          $('#second-select').load('/categories/2');
    });
});

在您的CategoriesController中,您的show动作应该响应format.js,这会使子类别变为部分:

class CategoriesController
...
def show
  @subcats = SubCategory.find_all_by_parent_category(params[:id])
  ...
  respond_to |format|
    ...
    format.js { render :partial => "subcategories", :locals => { :subcats => @subcats } }
  end
end

和您的子类别部分:

<% subcats.each do |subcat| %>
<option value="<%= subcat.value %>"><%= subcat.text %></option>
<% end %>