我需要在我的设计注册表单上发送用户选择的实际语言的参数,并将其作为参数 [: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| %>
我有两个控制器,一个用于用户,另一个用于管理员,成功登录后,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"}