2013-10-15 73 views
0

我有很多版本的一個產品型號:如何在關聯模型的選擇框中設置「selected」選項?

class Product < ActiveRecord::Base 
    attr_accessible :name, :versions_attributes 
    has_many :versions 
    accepts_nested_attributes_for :versions, allow_destroy: true 
end 

class Version < ActiveRecord::Base 
    attr_accessible :available_q, :kind, :product_id 
    belongs_to :product 
end 

我想目前的available_q屬性的(管理)用戶與「是」或「否」,並在選項的選擇框當然我希望選擇框顯示當前版本數據庫中的任何版本,但似乎無法完成此操作。下面是涉及到選擇框的相關型號產品形態視圖代碼的一部分:

<%= form_for(@product) do |f| %> 
… 
<%= f.fields_for :versions do |version| %> 
<%= version.select :available_q, options_for_select([['Yes', 't'],['No', 'f']], version.object.available_q) %><br /> 
… 
<% end %> 
… 

一切運作良好,只是目前的選擇框始終顯示是即使有更新數據庫後,「否」 。我很可能忘記了做一些非常簡單的事情,但非常感謝這方面的幫助。

+0

available_q的數據類型是什麼,該屬性的合法值是什麼? – rb512

回答

0
<%= version.select :available_q, options_for_select([['Yes', 't'],['No', 'f']], version.object.available_q == 't' ? 0 : 1) %> 

您可以嘗試上面的解決方案。 options_for_select的第二個參數不是要顯示的值,而是集合數組[['Yes', 't'],['No', 'f']]上值的索引。

+0

André,感謝您花時間回覆我的問題。 'available_q'是一個布爾值,其值爲't'或'f'。在這種情況下,你使用索引設置選定項目的建議似乎不起作用(可能是因爲它位於'f.fields_for'標籤中?)例如,當我嘗試將簡單的'1'(甚至是' '1'')作爲'options_for_select'函數中的第二個參數,它在重新加載的選擇框中仍然沒有選擇「否」。如果您對這個問題有任何進一步的想法,我會很高興聽到他們的意見。 –

+0

hey @ user2884072其實我只是意識到我弄亂了變量'version',我認爲它是模型版本的一個對象。 請檢查這個答案我給了http://stackoverflow.com/questions/19242056/edit-model-using-selectbox-nested-form-gem/19246814#19246814我認爲可能會幫助你。乾杯! –

0

我找到了解決辦法:我遇到的困難似乎與使用:available_q有關,它有boolean數據類型。當我將其更改爲string類型時,問題就消失了!

相關問題