ruby-on-rails - 自定义设计方法 : render 'new' redirect to/users instead of/users/sign_up

标签 ruby-on-rails ruby devise render

我的设计 registration_controller.rb 中有一个自定义的 protected 方法:

 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

最佳答案

render 'new' 呈现 new 模板,但 url 和 action 保持不变。

例如,您从 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' 或使用路径辅助方法。

关于ruby-on-rails - 自定义设计方法 : render 'new' redirect to/users instead of/users/sign_up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481771/

相关文章:

ruby-on-rails - Ruby Rical 时区问题

ruby - 我杀了 rvm 现在我有一条 bash 消息

ruby-on-rails - rails : Catch a request in a scope when the request doesn't match anything in the scope

ruby-on-rails-3 - 使用 omniauth-facebook "Invalid Credentials"设计

ruby-on-rails - 我因 Ruby on Rails 而承担了哪些技术债务(如果有)?

ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息

ruby-on-rails-4 - CanCanCan 在异常上抛出一个常规的 Rails 错误,而不是像我指定的那样的 flash 消息

ruby-on-rails - 如何在 Controller RSpec 中测试设计,错误:未定义方法 `assign' for #<RSpec::Core::ExampleGroup::Nested_1:0x0000010597f4b8>

ruby-on-rails - Ruby on Rails 教程第 3 版,第 9 章 : Failed test on users_edit_test. rb

ruby-on-rails - 生产服务器上的 Bundler 找不到任何 gem