2013-08-17 31 views
6

Rails 4.0.0 ve Devise 3.0.2 kullanıyorum ve Devise README içinde this instruction'u takip ederek Güçlü Parametreler ile Devise'yi yapılandırmaya çalışıyorum. Güçlü Parametrelerle Deveyi Özelleştirme

Ben Sonra application_controller.rb

class ApplicationController < ActionController::Base 
    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :nick 
    end 
end 

böyle bir kod yazdım ben http://localhost:3000/users/sign_up ziyaret etti.

tanımsız yöntem ben devise_parameter_sanitizer.for(:sign_up) << :nick

yazdı tam hattına <<' for {}:ActionController::Parameters

ve puanları Yanlış yaptığım bir şey var mı: Ben diyor ki, bir NoMethodError in Devise::RegistrationsController#new var? Yardım ettiğin için teşekkür ederim.

+0

ben de aynı kod çalıştı ve aynı hatayı alıyorum:

# Single field devise_parameter_sanitizer.for(:account_update) << :first_name # Multiple fields at a time devise_parameter_sanitizer.for(:account_update) << [:first_name, :last_name] 

Ama uyardı, şu anda bu Release Candidate olduğunu. 'devise_parameter_sanitizer.for (: sign_up) 'boş bir karma döndürür, bu nedenle' << 'metodunu çağırmak mümkün değildir. [bir sorun] [1] gönderdim, bunu takip edebilirsiniz. [1]: https://github.com/plataformatec/devise/issues/2574 –

+0

@ RafałCieślak Onayınız için teşekkür ederiz, sorunu takip edeceğim. –

cevap

4

Jose Valim said olarak, Devise 3.1.0.rc özelliği, işte bu yüzden çalışmıyor. README içindeki diğer sözdizimlerini kullanmanız gerekir.

5

Dene:

class ApplicationController < ActionController::Base 
     ... 
     before_filter :configure_permitted_parameters, if: :devise_controller? 
     ... 
     def configure_permitted_parameters 
     devise_parameter_sanitizer.for(:sign_up) { |u| 
      u.permit(:email, :password, :password_confirmation, :nick) 
     } 
     end 

Bana uyar! : D

+0

Bu modelde mi çalışıyor? –

+0

ApplicationController: 'u_filter içine koydum: configure_permitted_parameters, eğer:: devise_controller? –

4

Sorun, sorununuzla tam olarak eşleşiyor: #2574 : devise_parameter_sanitizer.for(:sign_up) << :something raises an error. Aslında, özel alanların bu gibi güçlü parametrelere ekleme yöntemi, Devise 3.1 ile gelen yeni bir özelliktir.

Rubygems.org'daki geçerli sürüm 3.0.3 olduğundan, bu yöntemi şimdilik raylarınızdaki projede kullanamazsınız. Böyle varsayılan ayarları geçersiz gerekecek:

devise_parameter_sanitizer.for(:sign_up) do |u| 
    u.permit :email, :password, :password_confirmation, :first_name, :last_name 
end 


Ama gerçekten gerekiyorsa, size Gemfile düzenlemek ve bununla bu satırı

gem 'devise', '3.0.3' 

yerini alabilir bir:

gem 'devise', github: 'plataformatec/devise', branch: 'master' 

O zaman c Kolayca böyle özel alanlar ekleyin: 3.1.0 RC1

+0

her zaman küçük detaylar ... benim gibi fakir github noobs'lar için bu sözlerden bahsederseniz iyi olur ... (SADECE web üzerinde birkaç farklı örneği denedim) SADECE şey, Carlos gibi ü.permit grubu yukarıda bahsetti. – Danny