2014-09-21 44 views
0

<%= form_for(:offer,:url=>{:controller=>'offers',:action=>'combo'}) do |f|%>如何获得所选项目的ID在下拉

<%= f.select :catId_get, options_from_collection_for_select(@categories, "id", "name"), prompt: "Select Category" %>

我在rails.I是新的有dropdown所有类别there.When我选择这个dropdown I类想要在我的控制器中获得其类别ID,以便我可以使用该ID为它的孩子dropdown

回答

0

你的ID应该由

params[:offer][:catId_get] 
在控制器

访问。

1

选择

在HTML中,每select选项有两个值 - 该valuelabel

<select> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

这是唯一被传递到控制器的价值。这意味着如果您可以在安装了正确的value/label的Rails应用程序中创建select标记,它将传递您所需的正确数据。


Rails的

以下是我会处理这件事:

<%= form_for :offer, offers_combo_path do |f|%> 
    <%= f.collection_select :cat_id, @categories, :id, :name, prompt: "Select Category" %> 

这将通过以下PARAMS您categories_controller

#app/controllers/categories_controller.rb 
class CategoriesController < ApplicationController 
    def combo 
     params[:offer][:cat_id] 
    end 
end 

建议

其实我建议你使用form_tag帮手这一点,而不是form_for。原因是form_for主要是针对ActiveRecord对象,虽然你的助手可以使用:symbols,你真的需要使用一个更复杂的系统

我只是用下面的更换你form_for

<%= form_tag offer_combo_path do %> 
    <%= collection_select :cat_id, @categories, :id, :name, prompt: "Select Category" %> 
<% end %> 
+0

我可以在没有提交表单的情况下获得id,因为在同一个表单中我有两个下拉类别和子类别。 – John 2014-09-22 10:14:17