2012-06-06 17 views
9

Estoy siguiendo el tutorial de Michael Hartl here y estoy tratando de crear un índice de usuarios.¿Número incorrecto de argumentos?

Mi código:

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

y

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

me he asegurado mi código coincide con el código en el tutorial exactamente, pero estoy recibiendo este error:

wrong number of arguments (2 for 1) 

¿Qué estoy haciendo mal? ¿Alguna idea?

+1

¿Qué línea de código obtiene este error? ¿Podrías mostrar tu rastro? – badams

+1

Saber qué enunciado está causando el error sería útil. Pero, en esencia, estás pasando dos argumentos a un método que solo requiere un argumento. – harald

+0

** Resuelto el problema ** resulta que fue un error en 'gravatar_for'. ¡Lo siento! –

Respuesta

24

De acuerdo con el tutorial, el método gravatar_for se define como

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 

en cuenta que sólo acepta un parámetro: el usuario. Later in chapter 7, después de los ejercicios, el tutorial describe cómo agregar un parámetro de tamaño:

# 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 

A juzgar por su mensaje de error, no se ha actualizado el método a utilizar el parámetro de tamaño opcional.

+0

Sí, este fue exactamente mi error. ¡Gracias! –

1

Si siguió el tutorial y agregó el hash de opciones a la función, entonces solo le falta el {} alrededor de las opciones.

Esto debería funcionar. <%= gravatar_for user, {size: 52} %>

+0

Fue en realidad un error en la función gravatar_for en sí. ¡Gracias! –

+0

Ruby no requiere llaves siempre que el hash sea la última parte de los argumentos. – BalinKingOfMoria

-1

Marque aquí:

<%= gravatar_for user, :size => 52 %> 
Cuestiones relacionadas