【发布时间】:2018-12-31 01:57:20
【问题描述】:
我的设计中有一个自定义的受保护方法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,没有持久性信息。你知道为什么吗?
这是我的 application_helper.rb
module ApplicationHelper
def resource_name
:user
end
def resource
@user ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
【问题讨论】:
-
你是怎么走上这条路的?例如哪个视图包含此处提交的表单以及控制器操作是什么样的?似乎您希望数据显示在
new上,并且看起来您在新操作中有一个User,因此为了使该数据持续存在,您还需要此方法中的@user实例变量。但如果没有额外的上下文,就很难分辨 -
嘿@engineersmnky 感谢您的回答!我对这个设计表单的路线是设计
users/sign_up与registrations/new.html.erb相关联。我没有以/users结尾的路线。这很奇怪,因为它有点不知从哪里创建了一条路线。我用更多信息编辑了我的问题;) -
面临同样的问题。
标签: ruby-on-rails ruby devise render