【发布时间】:2011-01-03 19:14:21
【问题描述】:
我目前有两个 Ruby 选择:一个用于类别,另一个用于子类别。如您所料,第二个必须在第一个更改时自行更新。
例如,如果我从第一个类别中选择“运动”类别,则第二个选择应该加载所有运动。
如何处理“索引更改”事件?是否有“红宝石方式”或者我必须使用 javascript?
谢谢, 布赖恩
【问题讨论】:
标签: javascript html ruby-on-rails ruby select
我目前有两个 Ruby 选择:一个用于类别,另一个用于子类别。如您所料,第二个必须在第一个更改时自行更新。
例如,如果我从第一个类别中选择“运动”类别,则第二个选择应该加载所有运动。
如何处理“索引更改”事件?是否有“红宝石方式”或者我必须使用 javascript?
谢谢, 布赖恩
【问题讨论】:
标签: javascript html ruby-on-rails ruby select
您必须至少使用一些 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 %>
【讨论】: