我有用戶模型,有很多細節。如何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>
您是否得到了適合您的答案? –