2012-06-19 24 views
0

我開始在Rails應用程序上開發,在我開始向錯誤方向行進之前,我想看看是否有共同的方法(即最佳實踐)來執行此操作。我有模型GamePlayerhas_many :through關係。我有這些泛音顯示的項目:如何在Rails中組織多模型視圖?

views/games/_game.html.erb

<%= content_tag_for :li, game do %> 
    <span class="name"><%= game.name %></span> 
    <% if game.players.any? %> 
    <ul class="player_list"> 
     <%= render :partial => 'players/player', :collection => game.players %> 
    </ul> 
    <% end %> 
<% end %> 

views/players/_player.html.erb

<%= content_tag_for(:li, player) do %> 
    <span class="name"><%= player.name %></span> 
    <span class="delete"> 
    <%= link_to "delete", player, :method => :delete, :class => :delete %> 
    <span> 
<% end %> 

的問題是,我希望玩家能夠在不同環境下顯示不同。例如,玩家不應該像遊戲玩家索引那樣從遊戲節目頁面中「刪除」。創建另一個像views/games/_player.html.erb這樣的決定玩家如何在遊戲環境中顯示的部分是否可以接受?還是有更好的解決方案?

回答

0

當你說:

「是否可以接受創建另一個部分像 的意見/遊戲/ _player.html.erb決定如何玩家在遊戲的上下文中顯示 」

我相信是不是目的的一個部分。

看來你給邏輯的觀點,這是某種程度上的錯誤。我相信你可以在助手中有一個方法來做決策邏輯。

所以,這裏是什麼,我想我會做的,你給的例子:

  1. 有幾個諧音是呈現不同的東西(上下文相關的)。
  2. 在助手中創建一個方法,該方法將分析上下文並選擇要渲染的部分。
+0

感謝您的回覆。所以,如果我理解正確,你說我應該有一個幫助器方法,我調用_player partial來決定是否顯示給定上下文的刪除鏈接?換句話說,視圖調用刪除按鈕,但輔助方法(或演示者)確定它是否顯示? – qalep

+0

如果邏輯有點複雜,那就把它放在助手中,否則你可以在部分本身做一個小條件。儘管如此,我還是認爲你想渲染不同的部分。 – Nobita

相關問題