2010-12-27 15 views
17

Rails uygulamasında Devise ile kimlik doğrulamayı uygulamaya çalışıyorum (Rails 2.3.8, Devise 1.0.7, Windows Vista'da çalışan melez). Ben otomatik oluşturulan kısmi _devise_links.html kullandığınızdadevise_mapping değişkeni nedir ve nasıl ekleyebilirim?

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

budur: Ama şu hatayı alıyorum.

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

Bunu nasıl düzelteceğinizle ilgili herhangi bir fikir var mı? Devise_mapping değişkeninin benim görüşlerime dahil edilmediğini varsayıyorum, ancak bu konuda ne yapacağım?

cevap

5

bkz eski, ama sanırım neden sadece kısmi işleyemediğini anladım. Oluşturmaya çalıştığınız kısmi, sign_in/sign_up formunun altında gösterilen bağlantıların kısmi kısmıdır.

Bu bağlantıları uygulamanıza eklemek isterseniz, this page on the Devise Wiki bunu nasıl yapacağınızı gösterecek ve kendi kısmi (ların) oluşturulmasını içerecektir.

-1

Rota.rb dosyasında devise_for çağrısı var mı?

Örneğin, Kullanıcı sınıf için bunu kullanıyor, sonra rota olacaktır:

devise_for: Kullanıcıların

fazla bilgi için

, bu soru türüdür fark https://github.com/plataformatec/devise

+0

Tamam, yanlış cevap sanırım. – courtsimas

1

devise_mapping kullanmak yerine, söz konusu kullanıcı sınıfının Kullanıcı olduğu için Devise.mappings[:user]'u kullanabilirsiniz.

+0

Harika, teşekkürler! – Laser

40

Yardımcı yöntemleri ApplicationHelper'a ekleyebilirsiniz. Uygun model adını kullandığınızdan emin olun (benim durumumda User modelini temsil eden :user).

def devise_mapping 
    Devise.mappings[:user] 
end 

def resource_name 
    devise_mapping.name 
end 

def resource_class 
    devise_mapping.to 
end 

Güncelleme 1/28/2014

tasarlamak ana dal devise_mapping şimdi istek saklanır göstermektedir:

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

Ve resource_name yanı scope_name olarak, diğer ad olarak. Daha fazla bilgi için bkz. devise_controller.rb.

+0

Hayır ben funciono el Güncelleme. Ben de kontrolden çıkıyorum. – juliangonzalez

İlgili konular