Devise
登録コントローラーを上書きしようとしています。セットアップは次のとおりです。
Registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!, :only => :token
def new
super
end
def create
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = User.new(params[:user])
if @user.save
render 'create.js', :success => true
else
render 'create.js', :success => false
end
end
end
ルート.rb
(...)
devise_for :users, :controllers => {:sessions => 'sessions', :registrations => 'registrations'}
match 'registrations/create' => 'registrations#create' , :as => :user_register
# not matter if i'll put `match 'registrations/create'` line above or under the `devise_for` line
(...)
そしてそれはすべて(私がブラウザを指すときregistrations/create
)私にエラーを与えます:
不明なアクション
パス「/registrations/create」のデバイスマッピングが見つかりませんでした。これは、次の2つの理由で発生する可能性があります。1)ルートをスコープブロック内にラップするのを忘れた。例:devise_scope:user do match "/ some / route" => "some_devise_controller" end 2)ルーターをバイパスするDeviseコントローラーをテストしています。その場合、使用するマッピングをDeviseに明示的に指示できます。@ request.env ["devise.mapping"] = Devise.mappings [:user]
同様の問題を説明しているスレッドをいくつか見つけましたが、まったく役に立ちませんでした。アドバイスありがとうございます!