我正在关注Michael Hartl的教程here,并且正在尝试创建用户索引。
我的代码:
class UsersController < ApplicationController
before_filter :signed_in_user, only: [:index, :edit, :update]
.
.
.
def index
@users = User.all
end
.
.
.
end
和
<%= 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>
我已确保我的代码与教程中的代码完全匹配,但我收到此错误:
wrong number of arguments (2 for 1)
我做错了什么?有什么想法吗?
答案 0 :(得分: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
请注意,它只接受一个参数:用户。 Later in chapter 7,在练习之后,教程描述了如何添加大小参数:
# 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
根据您的错误消息判断,您尚未更新方法以使用可选的大小参数。
答案 1 :(得分:1)
如果您按照教程并将选项哈希添加到函数中,那么您只会错过选项周围的{}。
这应该有效。
<%= gravatar_for user, {size: 52} %>
答案 2 :(得分:-1)
点击此处:
<%= gravatar_for user, :size => 52 %>