参数数量错误?

Dan*_* M. 9 ruby-on-rails erb

我在这里关注Michael Hartl的教程,并且正在尝试创建用户索引.

我的代码:

  class UsersController < ApplicationController
  before_filter :signed_in_user, only: [:index, :edit, :update]
  .
  .
  .
  def index
    @users = User.all
  end
  .
  .
  .
  end
Run Code Online (Sandbox Code Playgroud)

<%= provide(:title, 'All users') %>
<h1>All users</h1>

<ul class="users">
  <% @users.each do |user| %>
    <li>
      <%= gravatar_for user, size: 52 %>
      <%= link_to user.name, user %>
    </li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

我确保我的代码与教程中的代码完全匹配,但我收到此错误:

wrong number of arguments (2 for 1)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?有什么想法吗?

rpe*_*oso 24

根据教程,gravatar_for方法定义为

def gravatar_for(user)
  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
Run Code Online (Sandbox Code Playgroud)

请注意,它只接受一个参数:用户.在第7章的后面,练习之后,教程描述了如何添加size参数:

# 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
Run Code Online (Sandbox Code Playgroud)

根据您的错误消息判断,您尚未更新方法以使用可选的大小参数.