如何以rails形式链接下拉列表

时间:2010-02-11 03:50:31

标签: ruby-on-rails

如何在rails页面上链接下拉列表。这两个下降都将来自数据库。

例如,如果第一个下拉列表是category(来自category表)。第二次下拉,products,也来自db,将根据首次下拉选择填充?

2 个答案:

答案 0 :(得分:3)

您可以使用collection_select助手创建下拉列表,并在一个下拉列表中选择值后,您可以将ajax请求发送回控制器操作,以使用新的下拉列表和产品更新页面的其他元素,如此< / p>

<%= collection_select(:category, :some_category_method_name, 
    Category.all, :id, :category_name, 
    {:prompt => 'Select'},
    { :onchange =>  remote_function(:url => {:action => 'get_products'}, 
    :with => "'id=' + this.value")}) 
%>
<div id='product_dropdown'></div>

基本上上面的代码就是这样做,生成类别下拉列表以及从此下拉列表中更改所选值将向具有所选类别ID的操作'get_products'发送请求。然后在该方法中,您可以获得具有该类别的所有产品,并使用具有产品下拉列表的新部分更新“product_dropdown”元素。

 def get_products
   @category = Category.find(params[:id)
   render :update do |page|
     page.replace_html 'product_dropdown', 
          :partial => 'partial_name_in_which_you_have_product_drop_down',
          :locals => {:products => @category.products}

   end
 end

希望这可以让你开始。

如果您不确定collection_select是如何工作的,那么here is the docs

答案 1 :(得分:0)

最简单的方法是使用一个提供分层菜单的Javascript小部件。

这是来自YUI的o ne。我确信还有其他工具包基于其他工具包。