2014-09-21 100 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

相關問題