错误的参数个数(2个为1),Rails中的UsersController

时间:2015-12-01 07:53:04

标签: ruby-on-rails ruby ruby-on-rails-3

我正在通过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的问题吗?我真的不知道任何帮助。

1 个答案:

答案 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

您必须进一步阅读以了解如何重新定义该方法(它必须位于某处)。