2012-10-08 83 views
0

我做了什麼:的form_for軌選擇

rails g scaffold game optionselect:string 
rake db:migrate 
在我的 內視圖的form_for

(@game)

<div class="field"> 
    <%= f.label :optionselect %><br /> 
    <%= f.select(:optionselect, "id", { "Option 1" => "1", "Option 2" => "2"}) %> 
</div> 

什麼我想要做的:

選擇值從選擇框中並保存在@ game.optionselect

問題:沒有可選值可見。當我離開了f。前f.select值是可見的,但沒有被保存(我知道)。

+0

你做的是這裏所描述:http://guides.rubyonrails.org/form_helpers.html#select-boxes-for-dealing-with-models?所以它會:'select(:game,:optionselect,[[「Option 1」,「1」],[「Option 2」,「2」]])'或'f.select(:optionselect,[[ 「選項1」,「1」],[「選項2」,「2」]])'仔細閱讀有關使用select for belongs_to關聯的紅色塊,如果這就是您想要實現的目標 – pjam

+0

並順帶一提,我相信這是'form_for(@game)',而不是'form_for(@games)'對嗎? – pjam

回答

2

這是很好的做法,以保持這種集合模型和創建類的方法讓他們做好準備,例如:

class Game < ActiveRecord::Base 

    OPTIONS = [ 
    {:name => 'Option 1', :id => 1}, 
    {:name => 'Option 2', :id => 2}, 
    {:name => 'Option 3', :id => 3} 
    ] 

    def self.options 
    OPTIONS.map{ |option| [option[:name], option[:id]] } 
    end 
end 

然後在視圖:

= f.select :optionselect, Game.options 
+0

這給了我一個語法錯誤「意外的關鍵字結束」,所以我改變它** def self.options ** – p0rter