如何获得所选项目的ID在下拉
问题描述:
<%= 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
。
答
你的ID应该由
params[:offer][:catId_get]
在控制器
访问。
答
选择
在HTML中,每select选项有两个值 - 该value
和label
:
<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 %>
我可以在没有提交表单的情况下获得id,因为在同一个表单中我有两个下拉类别和子类别。 – John 2014-09-22 10:14:17