问题描述
|
我正在尝试一个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 %>
Players#index中的NoMethodError
解决方法
这是您的代码的直接翻译:
<% @players.each do |player| %>
<% div_for player do %>
<%= player.FNAME %> <%= player.SURNAME %>
<% end %>
<% end %>
给定一个集合的render :partial
(本例中为@players
)将逐步浏览该集合并为您呈现部分内容。
但是呈现集合还可以为您提供计数器和间隔模板。
, <div>
<% @players.each do |player| %>
<p><%= player.FNAME %></p>
<p><%= player.SURNAME %></p>
<% end %>
</div>
仅供参考,将这些内容保留在部分内容中是个好主意。
, 基本上,div_for将寻找一个ID以便:
<div id=\"the_id\">
因为您传递的是数组,而不是对象,所以丢失了。
您应该使用content_tag来达到目的。
在此处查看文档:http://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag