0

我开始在 Rails 应用程序上进行开发,在我开始朝着错误的方向前进之前,我想看看是否有一种通用的方法(即最佳实践)来做到这一点。我有模特Game并且Playerhas_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 回答