Создание простого выпадающего меню в Rails - PullRequest
1 голос
/ 01 февраля 2011

Это действительно кажется достаточно простым, но по какой-то причине я упускаю что-то критическое.

У меня есть вид:

<% 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 [:спектр]?Это, однако, ноль.

1 Ответ

2 голосов
/ 01 февраля 2011

Я думаю, ваш код можно упростить для работы следующим образом:

<% form_for @foo, :url => {:action => 'bar'} do |f| %>
  <%= f.select :range, FooModel::MONTHS %>
  <%= submit_tag "Submit", :disable_with => "Submitting..." %>
<% end %>

Использование collection_select для простых случаев, таких как этот, вероятно, излишне.f.select должно быть достаточно.

...