2012-06-19 2 views
0

Я начинаю разработку в приложении 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, который определяет, как игроки отображаются в контексте игры? Или есть лучшее решение?

ответ

0

Когда вы говорите:

«Допустимо ли, чтобы создать еще один частичный как просмотров/игры/_player.html.erb, который определяет, как игроки отображаются в контексте игры»

Я считаю, что это не цель частичного.

Кажется, вы даете логику взгляду, и это как-то неправильно. Я считаю, что у вас может быть метод в помощнике, который будет делать эту логику решения.

Итак, вот что я думаю, что я хотел бы сделать это в примере, вы дали:

  1. Есть несколько партиалов, которые делают разные вещи (зависит от контекста).
  2. Создайте метод в помощнике, который проанализирует контекст и выберите частичный рендер.
+0

Благодарим за отзыв. Итак, если я правильно понимаю, вы говорите, что я должен иметь вспомогательный метод, который я вызываю в части _player, чтобы решить, показывать ли ссылку на удаление с учетом контекста? Другими словами, представление вызывает кнопку удаления, но вспомогательный метод (или ведущий) определяет, отображается ли оно или нет? – qalep

+0

Если логика является довольно сложной да, поставьте ее в помощнике, иначе вы можете сделать небольшое условие в частичном себе. Я думал, что вы хотите отображать разные частички в зависимости от контекста. – Nobita

Смежные вопросы