Ruby on rails Rails 4-显示来自不同模型的值时的对象引用输出
我有三个模型:团队、球员和所有权。他们的关系是这样的:Ruby on rails Rails 4-显示来自不同模型的值时的对象引用输出,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有三个模型:团队、球员和所有权。他们的关系是这样的: <%= form_for @ownership do |f| %> <p> <%= f.label :team_id %><br> <%= @ownership.team.name %> </p> <p><%= f.label :player_id %><br> <%= f.collection_select(:player_
<%= form_for @ownership do |f| %>
<p>
<%= f.label :team_id %><br>
<%= @ownership.team.name %>
</p>
<p><%= f.label :player_id %><br>
<%= f.collection_select(:player_id, Player.all, :id, :name)%>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
team.rb
class Team < ActiveRecord::Base
has_many :ownerships
has_many :players, through: :ownerships
validates :name, presence: true
validates :division, presence: true
end
当我更新所有权时,当我向团队展示(show.html.erb)时,玩家显示得很好。但是当我显示players索引视图时,我从中得到了奇怪的输出。团队分配正在工作,但是,团队名称会显示为
#<Team:0x007f8f37a76f20> and #<Team:0x007f8f37a4c360>.
来自players_controller.rb的索引操作是基本的:
def index
@players = Player.all
end
我选择球员的方式重要吗?我在所有权编辑表单中使用的下拉菜单如下所示:
<%= form_for @ownership do |f| %>
<p>
<%= f.label :team_id %><br>
<%= @ownership.team.name %>
</p>
<p><%= f.label :player_id %><br>
<%= f.collection_select(:player_id, Player.all, :id, :name)%>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
您能粘贴使用player.team.name时得到的准确错误吗?#是一个对象引用。请发布玩家“索引”操作的控制器代码。让我们确保我们在这里涵盖了所有基础:查看schema.rb文件,其中定义了teams表。名称有一个列定义,是吗?
是否正确显示团队名称?是的,团队表有一个名称列,在ownership index.html.erb视图中工作正常。能否粘贴使用player.team.name
时出现的准确错误?#是一个对象引用。请发布玩家“索引”操作的控制器代码。让我们确保我们在这里涵盖了所有基础:查看schema.rb文件,其中定义了teams表。名称有一个列定义,是吗?
是否正确显示团队名称?是的,团队表有一个名称列,在ownership index.html.erb视图中工作正常。
<% @players.each do |player| %>
<tr>
<td></td>
<td><%= player.name %></td>
<td><%= player.position %></td>
<td><%= player.team %></td>
</tr>
<% end %>
undefined method `name' for nil:NilClass
def index
@players = Player.all
end
<%= form_for @ownership do |f| %>
<p>
<%= f.label :team_id %><br>
<%= @ownership.team.name %>
</p>
<p><%= f.label :player_id %><br>
<%= f.collection_select(:player_id, Player.all, :id, :name)%>
</p>
<p>
<%= f.submit %>
</p>
<% end %>