Я начинаю разработку в приложении Rails и перед тем, как начать движение в неправильном направлении, я хотел бы посмотреть, есть ли общий способ (например, передовая практика) для этого. У меня есть модели Game
и Player
в отношении has_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
, который определяет, как игроки отображаются в контексте игры? Или есть лучшее решение?
Благодарим за отзыв. Итак, если я правильно понимаю, вы говорите, что я должен иметь вспомогательный метод, который я вызываю в части _player, чтобы решить, показывать ли ссылку на удаление с учетом контекста? Другими словами, представление вызывает кнопку удаления, но вспомогательный метод (или ведущий) определяет, отображается ли оно или нет? – qalep
Если логика является довольно сложной да, поставьте ее в помощнике, иначе вы можете сделать небольшое условие в частичном себе. Я думал, что вы хотите отображать разные частички в зависимости от контекста. – Nobita