Создание простого выпадающего меню в 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 для простых случаев, таких как этот, вероятно, излишне. выбор должен быть достаточным.

Другие вопросы по тегам