0

Я пытаюсь передать некоторую информацию из моей модели в мою частичную, но без успеха.Проходящая модель/var до частичного

Мой индекс выглядит следующим образом:

<div class="row"> 
    <% @players.each do |player| %> 
    <%= render partial: "players", locals: { player: @players }%> 
    <% end %> 
</div> 

Мои частичные выглядит следующим образом:

<div class="col-md-2 player"> 
     <div class="thumbnail"> 
      <img src="https://placehold.it/200x200" alt="t"> 
       <div class="caption"> 
        <h3><%= link_to player.name, player %></h3> 
        <p><%= "#{player.location}, #{player.age}" %></p> 
       </div> 
      </div> 
     </div> 

игрока Модель:

has_one :team 

Team Модель:

has_many :players 

Где я терпеть неудачу?

Edit: Я забыл упомянуть, что я получаю эту ошибку: undefined method 'model_name' for Player::ActiveRecord_Relation:Class

ответ

0

попробовать

<%= render @players %> 

вместо

<% @players.each do |player| %> 
    <%= render partial: "players", locals: { player: @players }%> 
<% end %> 

или иначе

заменить @players с player

<%= render partial: "players", locals: { player: player }%> 
+0

'<% = оказывают @players%>' оказывается моя коллекция 7 раз. '<% = сделать частичным:« игроки », locals: {player: player}%>' отрисовал его один раз. Я сделаю несколько быстрых тестов, чтобы узнать, работает ли это. Не могли бы вы объяснить мне, почему вы не используете @? – Onilol

+0

@ Онилол, да, вы должны удалить каждый блок. – rob

+0

Я не снимал его ... Я должен был? – Onilol

0

При оказании вашего частичном, передать местные жителям записи:

<div class="row"> 
    <% @players.each do |player| %> 
    <%= render partial: "players", locals: { player: player }%> 
    <% end %> 
</div> 
1

У вас есть undefined method 'model_name' for Player::ActiveRecord_Relation:Class ошибки, потому что вы передать коллекцию частичных locals: { player: @players }@players вот ActiveRecord_Relation коллекции. link_to player.name, player попытался сделать путь из коллекции и не смог.

index.html.erb страница:

<div class="row"> 
    <%= render partial: 'player', collection: @players %> 
</div> 

_player.html.erb частичный:

<div class="col-md-2 player"> 
    <div class="thumbnail"> 
     <img src="https://placehold.it/200x200" alt="t"> 
      <div class="caption"> 
       <h3><%= link_to player.name, player %></h3> 
       <p><%= "#{player.location}, #{player.age}" %></p> 
       </div> 
      </div> 
     </div> 

When a partial is called with a pluralized collection, then the individual instances of the partial have access to the member of the collection being rendered via a variable named after the partial.

Layouts and Rendering in Rails