在Rails中创建一个简单的下拉菜单

时间:2011-01-31 21:15:31

标签: ruby-on-rails form-for

这看起来真的很简单但由于某种原因我错过了一些关键的东西。

我有一个观点:

<% 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 个答案:

答案 0 :(得分:2)

我认为您的代码可以简化为以这种方式工作:

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

对于像这样的简单案例使用collection_select可能有点过分。 f.select应该足够了。