2010-05-21 60 views
2

我想使用has_many:through方法設置多對多關係,然後使用多選字段來設置關係。我下面這個教程:has_many:通過formtastic多選字段

http://asciicasts.com/episodes/185-formtastic-part-2

但是出於某種原因,表單顯示一個陌生的十六進制數,並改變每個頁面刷新,我不太確定我在做什麼錯。以下是我的模型/視圖代碼。

company.rb

has_many :classifications 
has_many :sics, :through => :classifications 

sic.rb

has_many :classifications 
has_many :companies, :through => :classifications 

classification.rb

belongs_to :company 
belongs_to :sic 

_form.html.erb

<% semantic_form_for @company do |f| %> 
    <% f.inputs do %> 
    <%= f.input :company %> 
    <%= f.input :sics %> 
    <% end %> 
    <%= f.buttons %> 
<% end %> 

這裏的表格看起來像是顯示了字段的正確條目數量,但顯然沒有顯示關係的正確名稱。

SIC Multi-Select http://web9.twitpic.com/img/103694166-98ad71116216d3d1b12dd77690b36248.4bf6ca20-full.jpg

回答

6

你們看到在ActiveRecord::Base對象的to_s方法。十六進制數字是每個請求不同的內存位置。 圍繞Formastic代碼查找後,它會從預定義列表中查找方法以查找要顯示的文本。

確保您的Sic模型在此列表to_label, display_name, full_name, name, title, username, login, value, to_s中有一個字段(或方法),它返回您想要的文本。

+0

你非常聰明,完美地工作,只是增加了一個名爲字段,它現在顯示得很好。謝謝。 – 2010-05-21 19:26:29