在我的项目中,我有两个模型,一个“治疗” - 模型和一个“类别” - 模型
class Category < ActiveRecord::Base
attr_accessible :typ
has_many :treatments
end
class Treatment < ActiveRecord::Base
belongs_to :patient
belongs_to :category
attr_accessible :content, :day, :typ, :category_typ
end
因此,在我的治疗表格中,用户也可以选择类别:
<div class="field">
<%= f.label :category_id %><br />
<%= f.collection_select :category_id, Category.find(:all), :id, :typ %>
</div>
我的问题是,以后我可以显示category_id,但我真的不知道我怎么能显示出类似的内容:
<% @patient.treatments.each do |treatment| %>
<tr>
<td><%= treatment.category_id %></td>
<td><%= treatment.content %></td>
<td><%= treatment.day %></td>
</tr>
<% end %>
我尝试了category_typ,但没有用!我是铁杆的初学者,我希望有人可以帮助我!谢谢!
def show
@patient = Patient.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @patient }
end
end
答案 0 :(得分:1)
您使用treatment.category.typ
。
您的控制器中还需要@patient = Patient.where(:id => params[:id]).includes(:treatment => [:category]).first
。
答案 1 :(得分:1)
好吧它可以用
<td><%= treatment.category && treatment.category.typ %></td>,
也许有人知道为什么会有效?
答案 2 :(得分:1)
适用于
<td><%= treatment.category && treatment.category.typ %></td>
因为某些治疗对象的类别为零。如果治疗需要有一个类别,我会在模型级别上进行验证,并在数据库上进行外键重写。
class Treatment
validates_presence_of :treatment
end
然后进行迁移
remove_column :treatments, :category_id
add_column :treatments, :category_id, :null => false
这将确保数据库中的引用完整性。如果不需要这种关系,那么忽略它。您还可以使用.try
进行代码1方法调用 <td><%= treatment.category.try(:typ)%></td>