我正在尝试一个ror教程,我遇到了以下代码:
index.html.erb:
<%= render :partial => @players %>
_player.html.erb:
<% div_for player do %>
<%= player.FNAME %> <%= player.SURNAME %>
<% end %>
players_controller.rb:
def index
@players = Player.all(:order => "FNAME")
respond_to do |format|
format.html
end
end
我想修改index.html.erb,以便不需要部分但是它无法正常工作。
请参阅以下代码。
index.html.erb:
<% div_for @players do %>
<%= @player.FNAME %> <%= @player.SURNAME %>
<% end %>
玩家#index中的NoMethodError
答案 0 :(得分:3)
这是您的代码的直接翻译:
<% @players.each do |player| %>
<% div_for player do %>
<%= player.FNAME %> <%= player.SURNAME %>
<% end %>
<% end %>
render :partial
给定一个集合(@players
本案例)将逐个遍历集合并为您渲染部分集合。
但渲染一个集合也会给你一个计数器和间隔模板。
答案 1 :(得分:2)
基本上,div_for会寻找一个id来制作:
<div id="the_id">
因为你传递了一个数组而不是一个对象,所以它已经丢失了。
您应该将content_tag用于您的目的。
请参阅此处的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag
答案 2 :(得分:2)
<div>
<% @players.each do |player| %>
<p><%= player.FNAME %></p>
<p><%= player.SURNAME %></p>
<% end %>
</div>
仅供参考,将这些内容保留在部分内容中是一个好主意。