如何在下拉列表中获取所选项目的ID

时间:2014-09-21 05:06:29

标签: ruby-on-rails

<%= 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

2 个答案:

答案 0 :(得分:2)

选择

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>

它只是传递给控制器​​的值。这意味着,如果您能够使用正确的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]

在您的控制器中。