选择
在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