ユーザーが選択した実際の言語のDevise登録フォームparamsを送信し、params [:lang]としてルートに保持する必要があります。
reCaptchaを検証しているのでカスタムコントローラーを持っています(その部分は機能します)。
だから私は私のルートにあります:
devise_for :users, controllers: { registrations: 'registrations' }
devise_for :users do
root :to => "devise/registrations#new"
get "/" => "devise/registrations#new"
post '/' => 'registrations#new', :as => :new_user_registration
match '/', :to => 'devise/registrations#new'
get "/logout", :to => "devise/sessions#destroy", :as => "logout"
end
#Sign
match '/:lang/:sec/sign' => 'frontend#sign', :as => :sign
私の登録フォーム:
<%= form_for(resource, :as => resource_name, :url =>
registration_path(resource_name, :lang => params[:lang], :sec => params[:sec]))
do |f| %>
そして、私は2つのコントローラーを持っています。1つはユーザー用、もう1つは管理者用です。ログインに成功すると、DeviseはユーザーコントローラーであるRestringidoに移動し、ユーザーが管理者として検証されるのか、一般ユーザーとしてのみ検証されるのか疑問に思います。
私のrestringidoコントローラーでは:
class RestringidoController < ApplicationController
before_filter :verify_is_user
def verify_is_user
if current_user.try(:admin?)
#redireccionar a backend
redirect_to :controller => "backend", :action => "index"
elsif current_user
#mantenerte en este controlador
else
redirect_to :controller => "frontend", :action => "sign"
end
そして、管理者向けの私のバックエンドコントローラー:
before_filter :verify_is_admin
def verify_is_admin
if current_user.admin?
else
redirect_to root_path
end
そして、エラーは次のとおりです。
No route matches {:controller=>"frontend", :action=>"sign"}