2011-01-31 88 views
1

這看起來很簡單,但由於某種原因,我錯過了一些關鍵的東西。在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 [:範圍]?然而,這是零。

回答

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應該足夠了。

+0

改變它,現在我得到:未定義的方法`model_name'爲第一行的NilClass:類。 – hector 2011-01-31 21:37:30