2012-06-06 27 views
9

Michael Hartl'ın öğreticisi here'u takip ediyorum ve bir kullanıcı dizini oluşturmaya çalışıyorum.Yanlış sayıda argüman var mı?

Kodum:

class UsersController < ApplicationController 
    before_filter :signed_in_user, only: [:index, :edit, :update] 
    . 
    . 
    . 
    def index 
    @users = User.all 
    end 
    . 
    . 
    . 
    end 

ve

<%= 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> 

benim kodunu tam olarak öğretici kod aynı olduğundan emin yaptık, ama bu hatayı alıyorum

:

wrong number of arguments (2 for 1) 

Neyi yanlış yapıyorum? Düşüncesi olan var mı?

+1

Bu hatayı hangi kod satırı alıyorsunuz? İzinizi gösterebilir misiniz? – badams

+1

Hatanın neden olduğu hangi ifadenin yararlı olacağını bilmek. Ama özünde, sadece bir argüman alan bir yönteme iki kez yazı yazıyorsunuz. – harald

+0

** Sorun çözüldü ** 'gravatar_for'da bir hata oldu çıkıyor. Afedersiniz! –

cevap

24

öğretici göre, gravatar_for yöntem sadece bir parametre kabul ettiğini

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 

Bildirimi olarak tanımlanır. Later in chapter 7, egzersizler sonra, öğretici bir boyut parametresini eklemek açıklar:

# 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 

sizin hata mesajı bakılırsa, isteğe bağlı boyut parametresini kullanılacak yöntemi güncellememişsinizdir.

+0

Evet, tam olarak benim hatamdı. Teşekkürler! –

1

Öğreticiyi izlediyseniz ve işlev için karma komutunu eklediyseniz, yalnızca seçenekler arasında {} eksiksiniz demektir.

Çalışması gerekir. Burada <%= gravatar_for user, {size: 52} %>

+0

Aslında gravatar_for işlevinin kendisinde bir hataydı. Yine de teşekkürler! –

+0

Ruby, karma'nın argümanların son kısmı olduğu sürece parantez gerektirmez. – BalinKingOfMoria

-1

Kontrol: Kullanıcı:

<%= gravatar_for user, :size => 52 %> 
İlgili konular