我正在通过Michael Hartl's Ruby on Rails Tutorial,虽然我已经能够自己解决一些错误,但是从我的第9章到第9章的这个错误让我成了圈子。
我的views/users/index.html.erb
:
<% provide(:title, 'All users') %>
<h1>All users</h1>
<ul class="users">
<% @users.each do |user| %> # Line flagged with error
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
我的用户帮助:
module UsersHelper
def gravatar_for(user, options = { size: 50 })
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end
该错误还标记了我的文件中不存在的另一行代码;我想它来自Ruby到HTML的转换?
delegate :to_xml, :to_yaml, :length, :collect, :map, :each, :all?, :include?, :to_ary, :join, to: :to_a
我一直在摸不着头脑,差不多两个小时没有任何进展。我所知道的是,当我用简单的文本替换索引页面时,这些错误就消失了。这是Gravatar的问题吗?我真的不知道任何帮助。
答案 0 :(得分:0)
好的,你传递给gravatar_for
方法的许多args。
将其重新定义为以下内容,您可以像以下一样使用它:
def gravatar_for(user, options = { size: 50 })
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
size = options[:size]
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
您必须进一步阅读以了解如何重新定义该方法(它必须位于某处)。