2014-09-21 3 views
0

<%= 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.I есть dropdown, где все категории there.When я выбрать категорию из этой dropdown я хочу получить идентификатор своей категории в моем контроллере, чтобы я мог использовать этот идентификатор для своего дочернего dropdown.

ответ

0

Ваш идентификатор должен быть доступен

params[:offer][:catId_get] 

в контроллере.

1

Выбрать

Каждый 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 %> 
+0

можно получить 'id', не отправив форму, после выбора какой-либо категории, потому что в той же форме у меня есть два раскрывающихся списка' category' и 'подкатегория'. – John

Смежные вопросы