2010-01-11 63 views
0

我目前有两个Ruby选择:一个用于类别,另一个用于子类别。正如你可能预料到的那样,第二个每当第一个改变时都要更新自己。如何处理所选项目在HTML选择中更改时的事件

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

我该如何处理“索引更改”事件?有没有“红宝石方式”或我必须使用JavaScript?

感谢, 布赖恩

回答

2

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

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

在你CategoriesController,你的节目的行动应响应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 %> 
+0

谢谢。我会试试看。 – 2010-01-11 15:31:58

+0

问题:我在创建公告时正在执行此操作,因此,我应该将控制器代码放在Show还是New方法中? – 2010-01-11 15:41:19

+0

因为您正在获取与您的某个类别相关的数据(而不是创建一个新类别),所以您希望它在您的类别的显示方法中使用。 – 2010-01-11 16:25:13

相关问题