Выбрать
Каждый select параметр в HTML имеет два значения - 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
в своем приложении Rails с правильной настройкой value
/label
, он передаст нужные вам данные.
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', не отправив форму, после выбора какой-либо категории, потому что в той же форме у меня есть два раскрывающихся списка' category' и 'подкатегория'. – John