Создание простого выпадающего меню в Rails
Это действительно кажется достаточно простым, но по какой-то причине я упускаю что-то критическое.
У меня есть мнение:
<% form_for :foo, @foo, :url => {:action => 'bar'} do |f|%>
<%= f.collection_select :range, FooModel::MONTHS%>
<%= submit_tag "Submit", :disable_with => "Submitting..." %>
<% end %>
У меня есть модель:
class FooModel < ActiveRecord::Base
MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
end
И у меня есть контроллер:
def new
@foo = FooModel.new
end
def index
respond_to do |format|
format.html # index.html.erb
end
end
def bar
if params[:foo]
@foos = params[:foo].inspect
end
respond_to do |format|
format.html # index.html.erb
end
end
У меня вопрос, как я могу получить информацию о том, какой элемент поля со списком был выбран при нажатии кнопки "Отправить"? Кажется, это не params[:foo], @foo или что-то еще, о чем я могу думать.
Обновление Глядя на это, кажется, я должен вызывать params[:range]? Это, однако, ноль.
1 ответ
Решение
Я думаю, что ваш код может быть упрощен для работы следующим образом:
<% form_for @foo,: url => {: action => 'bar'} do | f | %> <% = f.select: range, FooModel:: MONTHS%> <% = submit_tag "Отправить",: disable_with => "Отправка..." %><% end%>
Использование collection_select для простых случаев, таких как этот, вероятно, излишне. выбор должен быть достаточным.