7

Özel bir kayıt denetleyicim var, ancak bir oluşturma eylemini geçersiz kılmak istemiyorum.Ruby on Rails: Özel Kayıt Kaydı Denetleyici, Eylem Oluşturma İstemi Oluşturma

Unknown action 

The action 'create' could not be found for Devise::RegistrationsController 

Özel bir kayıt denetleyicisi var çünkü kendisi istedi Öyle mi: Ben bir kullanıcı kayıt çalıştığınızda bu hatayı alıyorum? Öyleyse, bu, burada geçersiz kılmadığım tüm eylemleri kopyalamak zorunda olduğum anlamına mı geliyor? https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb

Ya da başvurumda bir sorun var mı?

Benim yolları: Bu Bu kayıt formudur

class Devise::RegistrationsController < DeviseController 

    skip_before_filter :require_no_authentication 

    def edit 
    @user = User.find(current_user.id) 
    @profile = Profile.new 
    end 

    def update 
    # required for settings form to submit when password is left blank 
    if params[:user][:password].blank? && params[:user][:password_confirmation].blank? 
     params[:user].delete(:password) 
     params[:user].delete(:password_confirmation) 
    end 

    @user = User.find(current_user.id) 
    if @user.update_attributes(params[:user]) 
     set_flash_message :notice, :updated 
     # Sign in the user bypassing validation in case his password changed 
     sign_in @user, :bypass => true 
     redirect_to after_update_path_for(@user) 
    else 
     render "edit" 
    end 

    end 


    protected 
    def after_update_path_for(resource) 
     user_path(resource) 
    end 

    def after_sign_up_path_for(resource) 
     user_path(resource) 
    end 

end 

benim vasiyetle kaydı kontrolörü

devise_for :user, :controllers => { :registrations => "devise/registrations" }, :skip => [:sessions] do 
    get 'signup' => 'devise/registrations#new', :as => :new_user_registration 
    post 'signup' => 'devise/registrations#create', :as => :user_registration 
    end 

geçerli:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
... 
    <div> 
    <%= button_tag :type => :submit, :class => "btn btn-large btn-inverse" do %> 
    Sign up 
    <% end %> 
    </div> 
... 
<% end %> 

cevap

17

kaydı olduğu yönündeki kontrolör yanlış sınıfından devralan: DeviseController Bir kayıt ve h için bir temel sınıftır "Create" yöntemini kullanamazsınız ve özel Devise :: RegistrationsController sınıfınızı (yalnızca düzenleme ve güncelleme yöntemleri vardır) yapar - bu hataya neden olur. Orijinal vasiyet yöntemlerine yedek kullanımıyla kullanıcılar için kendi özel kayıt denetleyicisi oluşturmak için

, ben aşağıdakileri yapmanız öneririz:
1. registrations_controller orada oluşturmak kontrolörleri klasöründe
2. "kullanıcılar" klasör oluşturun.

Users::RegistrationsController < Devise::RegistrationsController 

ve herhangi eylemleri ("düzenle" ve "güncelleme")
3. değişiklikler hakkında "routes.rb" dosyasını bilgilendirmek geçersiz: rb dosya ve orada sınıfını tanımlamak

devise_for :users, :controllers => { registrations: 'users/registrations' } 
+0

Bu işe yarıyor. Neden bir klasör adı olarak tasarlanamayacak? – hellomello

+0

aslında, sanırım olabilir) ama genellikle bu tür uygulamalarda hata ayıklama deneyimi için acı bir deneyim var kurallar adlandırma rayları takip ediyorum: hatalar çok adsız yerlerde ve genellikle tek adlandırma, bazı adlandırma kurallarına uyulmamış olma eğilimindedir . –

+2

@RoaringStones 's' ve kayıt bitiminde eksiksiniz. Adın registrations_controller.rb olması gerekir – Ricbermo