我正在尝试使用has_many:through方法建立多对多关系,然后使用多选字段来设置关系。我正在学习本教程:
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 %>
此处的表格看起来似乎显示了该字段的正确条目数,但显然没有显示该关系的正确名称。
答案 0 :(得分:6)
您在to_s
对象的ActiveRecord::Base
方法中看到了什么。十六进制数是每个请求不同的内存位置。
在探索Formastic代码之后,它会从预定义列表中查找要查找要显示的文本的方法。
确保您的Sic
模型在此列表to_label, display_name, full_name, name, title, username, login, value, to_s
中有一个字段(或方法),用于返回所需的文本。