選擇
在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