9

ここでMichael Hartl のチュートリアルに従っており、ユーザーのインデックスを作成しようとしています。

私のコード:

  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)

私は何を間違っていますか?何かご意見は?

4

3 に答える 3

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

1 つのパラメーター (ユーザー) のみを受け入れることに注意してください。第 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

エラー メッセージから判断すると、オプションの size パラメータを使用するようにメソッドを更新していません。

于 2012-06-06T15:12:56.050 に答える
1

チュートリアルに従い、オプションハッシュを関数に追加した場合、オプションの周りの{}だけが欠落しています。

これは機能するはずです。 <%= gravatar_for user, {size: 52} %>

于 2012-06-06T15:09:27.897 に答える
-1

ここをチェックしてください:

<%= gravatar_for user, :size => 52 %>
于 2012-06-06T15:10:30.480 に答える