Hartl Rails教程的用户#index中的ArgumentError

时间:2013-09-01 19:46:56

标签: ruby-on-rails ruby railstutorial.org

当我尝试查看用户索引时,我一直遇到错误。这是Hartl的Ruby on Rails教程(一个优秀的教程)第9章

错误的参数数量(2对1)

<li>
  <%= gravatar_for user, size: 52 %>
  <%= link_to user.name, user %>
  <% if current_user.admin? && !current_user?(user) %>
    | <%= link_to "delete", user, method: :delete,
                                  data: { confirm: "You sure?" } %>
  <% end %>
</li>

我不知道为什么它认为第2行认为我在调用2个参数。

2 个答案:

答案 0 :(得分:6)

你一定错过了第7章(第7.6节):)中的练习。如果您查看该部分,您将在app/helpers/users_helper.rb中看到更新的帮助程序,如下所示:

module UsersHelper

  # Returns the Gravatar (http://gravatar.com/) for the given user.
  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
end

更新帮助程序后,您应该能够将此方法与两个参数一起使用。第二个参数是可选的,因此如果您调用gravatar_for user(即没有大小参数),则使用默认大小50,如果您拨打gravatar_for user, size:52,则52将用于gravatar的大小。

答案 1 :(得分:0)

祝贺你来到分会。 9!章节中我很无聊。 6

第2行是这样的:

<%= gravatar_for user, size: 52 %>

......相当于:

<%= gravator_for(user, {size: 52}) %>

这是两个论点。