0

私はRailsアプリの開発を始めており、間違った方向に進む前に、これを行うための一般的な方法(つまり、ベストプラクティス)があるかどうかを確認したいと思います。私はモデルを持っておりGamePlayer関係has_many :throughを持っています。そして、私はアイテムを表示するためにこれらのパーシャルを持っています:

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ゲームのコンテキストでプレーヤーがどのように表示されるかを決定するような別のパーシャルを作成することは許容されますか?または、より良い解決策はありますか?

4

1 に答える 1

0

あなたが言う時:

「ゲームのコンテキストでプレーヤーがどのように表示されるかを決定する、views/games/_player.html.erb のような別のパーシャルを作成することは許容されますか?」

それはパーシャルの目的ではないと思います。

ビューにロジックを与えているようですが、それはどういうわけか間違っています。その決定ロジックを実行するメソッドをヘルパーに含めることができると思います。

だから、あなたが与えた例で私がそれをするだろうと私が思うことは次のとおりです:

  1. 異なるものをレンダリングするいくつかのパーシャルがあります (コンテキスト依存)。
  2. コンテキストを分析し、レンダリングするパーシャルを選択するヘルパーでメソッドを作成します。
于 2012-06-19T05:14:27.793 に答える