2013-06-08 14 views
6

Ruby uygulamamda, kimlik doğrulaması için 'devise' gemini kullanıyorum ancak görünümleri özelleştirmek, her birini özelleştirdikten sonra görünümleri oluşturmak ve bunları kaydetmek istiyorum. düzenleme klasörünü kısmi olarak, çünkü bunları başka bir görünümde oluşturmak istiyorum.Raylar Özel Kayıt ve Giriş'i aynı sayfadaki sorunlar hakkında bilgilendirin

Sorunlarım, new/sessions çalışıyor, ancak kaydolmaya çalıştığımda, form gönderme ile ilgili bir sorun var gibi görünüyor. Burada login form bakın.

Düzenleme belgelerindeki düzenin nasıl özelleştirileceğiyle ilgili çok şey okudum, ancak formun düzenleme görünümü klasörü dışında çalışmasını sağlamak için nasıl uygulanacağı konusunda biraz kafam karıştı.

cevap

12

Aslında, sorunuz this question ile aynıdır, ancak biraz açıklayacağım ve yapmaya çalışıyorum.

  • İlk olarak, kayıt ayarını özelleştirmelisiniz. (customize devise)

  • İkinci olarak, kayıt formunun yanında özel bir giriş formu görüntüleyebilirsiniz. Benim örnek proje adım tarafından (wiki)


Örnek adım

Rota özelleştir kayıt vasiyetle ve oturum için (sadece şimdi ben inşa app çalıştı)

devise_scope :user do 
    # using login path for registration 
    get '/login' => 'registrations#new', :as => :new_user_registration 
    post '/signup' => 'registrations#create', :as => :user_registration 
    post '/signin' => 'sessions#create', :as => :user_session 
end 

oluştur kayıt ve oturum düzenleme özelleştirmek için denetleyici, örnek:

# customize registration controller 
class RegistrationsController < Devise::RegistrationsController 
    layout 'login' 
    skip_before_filter :require_no_authentication 
    before_filter :resource_name 

    def resource_name 
    :user 
    end 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(params[:user]) 
    ... 
    ... 
    end 
end 

# customize session controller 
class SessionsController < Devise::SessionsController 
    def create 
    super 
    end 
end 

oluşturma kaydı görünümleriapp/registrations/new.html.erb

koyun login veapp/registrations/new.html.erb içine kayıt formu.

<%= form_for(resource, :as => resource_name, :url => user_session_path(resource_name)) do |f| %> 
    .... 
<% end %> 

<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %> 
    .... 
<% end %> 

Ve son başvuru yardımcı içine

def resource_name 
    :user 
end 

def resource 
    @resource ||= User.new 
end 

def devise_mapping 
    @devise_mapping ||= Devise.mappings[:user] 
end 

Umut bu yardım bu koymak (yanında kayıt form projeniz benziyor)!

+0

Teşekkürler, bunu uygulamaya çalışacağım, söylediğin gibi, nasıl olacağını göreceksin –

+0

Bu gerçekten işe yarıyor, atm bazen kaydolmaya yöneliyorum (örneğin, hatalı kullanıcı adıyla kaydolmaya çalışırsam, fakat Bu muhtemelen 'benim hatam' ...) –

+1

@AndyHayden Eğer kötü bir kullanıcı adı tahmin edildiğinde yeniden yönlendirme yaparsanız bir güvenlik açığıdır. * Kullanıcı adının ne olduğu konusunda bir sızıntı var. Lütfen bunu yapma! – quantumpotato

İlgili konular