我有用户模型,有很多细节。如何link_to主对象在视图中看起来更干净?
在详细列表(索引)页面(./details)中有一个link_to备份主表或拥有详细信息的用户(./user/1)。
基本上,我想知道是否有办法使link_to方法的语法,使用ruby或rails约定来查看任何清理器,但我不知道。
<% @details.each do |detail| %>
<tr>
<td><%= detail.name %></td>
<td><%= link_to User.find_by_id(detail.foreign_key_id).name, \
User.find_by_id(detail.foreign_key_id) %></td>
...
这工作得很好,但我似乎记得在某个时候看到一个更清晰的语法。
[编辑] 也在这种情况下,我有两种方式,用户可以关联到细节。
我在想的数据模型与项目类似,所以我将以这种方式提出问题。因此,用户可以是项目的所有者,和/或项目的赞助商。
所以,User类将有以下....
class User < ActiveRecord::Base
has_many :owned_projects, class_name: "Project", foreign_key: :owner_id
has_many :sponsored_projects, class_name: "Project", foreign_key: :sponsor_id
end
那么该项目类将有此在它的定义
class Project < ActiveRecord::Base
belongs_to :owner, :foreign_key => :owner_id, :class_name => "User"
belongs_to :sponsor, :foreign_key => :sponsor_id, :class_name => "User"
end
工作表中同时具有owner_id字段和sponsor_id字段,所以用户类可以链接两次到项目表。
鉴于所有这一切,回到手头上的问题,我不知道如何使用更清晰的语法由@Michael Gaskill
描述如果是像她那样,它会是这样? %= link_to @project.sponsor.name, project.sponsor_id %></td>
Rails 魔法似乎没有弄清楚,或者我已经配置错了。
我已经测试过以下,这将工作,正如我前面提到的,但我试图确保没有更简洁的方法。
(目标是看到有关的详细信息页面,或项目在这个例子中,看看用户关联到它的两个类别,并有他们的名字可以点击链接到他们的显示 PAGE图谱)
<p>
<strong>Name:</strong>
<%= @project.name %>
</p>
<p>
<strong>Owner:</strong>
<%= link_to User.find_by_id(@project.owner_id).name, User.find_by_id(@project.owner_id) %>
</p>
<p>
<strong>Sponsor:</strong>
<%= link_to User.find_by_id(@project.sponsor_id).name, User.find_by_id(@project.sponsor_id) %>
</p>
您是否得到了适合您的答案? –