自定义设计方法:渲染'new'重定向到 /users 而不是 /users/sign_up



我的设备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'或通过使用路径助手方法。

最新更新