我的设备registration_controller.rb
:中有一个自定义的受保护方法
before_action :check_secret_code, only: [:create]
# Method de condition pour création du compte
include ApplicationHelper
# need application_helper.rb or will not work.
# GET /resource/sign_up
def new
super
end
# POST /resource
def create
super
end
def check_secret_code
if Invitation.where(:invit_name => params[:user]["invit_ref"]).blank?
render 'new'
else
Invitation.where(:invit_name => params[:user]["invit_ref"]).destroy_all
return true
end
end
但是当使用render 'new'
时,它呈现的是/users
而不是/users/sign_up
,没有持久的信息。你知道为什么吗?
这是我的应用程序_help.rb
module ApplicationHelper
def resource_name
:user
end
def resource
@user ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
render 'new'
呈现new
模板,但url和操作保持不变。
例如,从create
方法调用render 'new'
:
def create
@model = Model.new(params[:model])
if @model.valid?
@model.save!
redirect_to :some_path
else
render 'new'
end
end
如果@model
无效,则使用create
方法中的@model
变量来渲染new
模板。
因此,在您的情况下,如果您希望用户重定向到users/sign_up
,您需要明确地将他重定向到此页面:
通过redirect_to 'users/sign_up'
或通过使用路径助手方法。