将模型/变量传递给部分

Passing model / var to partial

我试图将一些信息从我的模型传递到我的部分但没有成功。

我的索引是这样的:

<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

团队模型:

has_many :players

我哪里失败了?

编辑:我忘了说我遇到了这个错误: undefined method 'model_name' for Player::ActiveRecord_Relation:Class

尝试

<%= render @players %>

而不是

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

否则

@players替换为player

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

渲染局部时,向本地人传递一条记录:

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

你有一个 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