<%= form_for(:offer,:url=>{:controller=>'offers',:action=>'combo'}) do |f|%>
<%= f.select :catId_get, options_from_collection_for_select(@categories, "id", "name"), prompt: "Select Category" %>
我是rails的新手。我有一个dropdown
所有类别都在那里。当我从这个dropdown
中选择一个类别时我想在我的控制器中获取它的类别ID,这样我就可以将该ID用于其子dropdown
。
答案 0 :(得分:2)
选择强>
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>
它只是传递给控制器的值。这意味着,如果您能够使用正确的select
/ value
设置在Rails应用中创建label
标记,则会传递您需要的正确数据。
<强>滑轨强>
以下是我处理它的方式:
<%= form_for :offer, offers_combo_path do |f|%>
<%= f.collection_select :cat_id, @categories, :id, :name, prompt: "Select Category" %>
这会将以下参数传递给您的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 %>
答案 1 :(得分:0)
您的ID可以通过
访问params[:offer][:catId_get]
在您的控制器中。