2010-12-27 13 views
17

Estoy tratando de implementar la autenticación con Devise en mi aplicación Rails (Rails 2.3.8, Devise 1.0.7, mongrel ejecutándose en Windows Vista). Pero estoy consiguiendo el error siguiente:¿cuál es la variable de diseño_mapaje y cómo puedo incluirla?

undefined local variable or method `devise_mapping' for #<ActionView::Base:0x6d63890> 

Esto es cuando se utiliza la _devise_links.html parcial generada automáticamente.

<%- if controller_name != 'sessions' %> 
    <%= link_to t('devise.sessions.link'), new_session_path(resource_name) %><br /> 
<% end -%> 

<%- if devise_mapping.registerable? && controller_name != 'registrations' %> 
    <%= link_to t('devise.registrations.link'), new_registration_path(resource_name) %><br /> 
<% end -%> 

<%- if devise_mapping.recoverable? && controller_name != 'passwords' %> 
    <%= link_to t('devise.passwords.link'), new_password_path(resource_name) %><br /> 
<% end -%> 

<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> 
    <%= link_to t('devise.confirmations.link'), new_confirmation_path(resource_name) %><br /> 
<% end -%> 

<%- if devise_mapping.lockable? && controller_name != 'unlocks' %> 
    <%= link_to t('devise.unlocks.link'), new_unlock_path(resource_name) %><br /> 
<% end -%> 

¿Alguna idea sobre cómo solucionar esto? Supongo que la variable de diseño_mapping no se incluye en mis vistas, pero ¿qué debo hacer al respecto?

Respuesta

5

realizo esta pregunta es una especie de antaño, pero creo que descubrí por qué no puedes simplemente dar ese aspecto parcial. El parcial que está tratando de representar es parcial para los enlaces que aparecen debajo del formulario sign_in/sign_up.

Si desea agregar esos enlaces a su aplicación, this page on the Devise Wiki le mostrará cómo hacerlo, y se trata de crear sus propios parcial (es).

-1

¿Tiene la llamada devise_for en su archivo routes.rb?

Por ejemplo, si usted lo está utilizando para su clase de usuario, a continuación, la ruta sería:

devise_for: los usuarios

para obtener más información, ver https://github.com/plataformatec/devise

+0

bien, mala respuesta, supongo. – courtsimas

1

En lugar de usar devise_mapping, puede usar Devise.mappings[:user], dado que la clase de usuario en cuestión es Usuario.

+0

Maravilloso, gracias! – Laser

40

Puede agregar métodos de ayuda al ApplicationHelper. Asegúrese de utilizar el nombre del modelo adecuado (en mi caso es :user que representa el modelo User).

def devise_mapping 
    Devise.mappings[:user] 
end 

def resource_name 
    devise_mapping.name 
end 

def resource_class 
    devise_mapping.to 
end 

actualización 1/28/2014

La rama principal del Legado muestra que devise_mapping se almacena ahora en la solicitud:

# Attempt to find the mapped route for devise based on request path 
def devise_mapping 
    @devise_mapping ||= request.env["devise.mapping"] 
end 

Y resource_name tiene el alias scope_name también. Vea devise_controller.rb para más información.

+0

No me funciono el Update. Me quedo con el anterior. – juliangonzalez

Cuestiones relacionadas