保持设计中的查询字符串注册

Jam*_*ver 6 ruby ruby-on-rails devise query-string

我正在使用rails with devise进行注册.我还添加了一个邀请码,所以不是每个人都可以注册.

邀请代码通过查询字符串传输,如"/ users/sign_up?invite_code = wajdpapojapsd",并通过"f.hidden_​​field:invite_code,:value => params [:invite_code]添加到注册表单的隐藏字段中".

这非常有效.唯一的问题是,如果注册没有得到验证和拒绝,则设计重定向到"/ users"并丢失其中包含invite_code的查询字符串.

由于在尝试失败后电子邮件保留在注册表单中,我相信这也适用于邀请代码.作为最糟糕的解决方案重定向:在注册失败并丢失电子邮件后返回,但保留邀请代码,将比现在的工作方式更好.

编辑:到目前为止我已经为设计设置了一个注册控制器,但是不知道如何获得所需的行为.

有关如何保留查询字符串或仅提供邀请代码的任何帮助都很棒.

Jam*_*ver 9

我现在找到了一个有效的解决方案.

我使用jstr的答案设置控制器设计并添加了"会话"行.

class MyRegistrationsController < Devise::RegistrationsController
  prepend_view_path "app/views/devise"

  def create
    super
    session[:invite_code] = resource.invite_code
  end

  def update
    super
  end
end
Run Code Online (Sandbox Code Playgroud)

之后我在devise/registrations/new.html.erb中添加了以下内容

<% if params[:invite_code]
  @invite_code = params[:invite_code]
else
  @invite_code = session[:invite_code]
end %>
Run Code Online (Sandbox Code Playgroud)

并将hidden_​​field更改为

<%= f.hidden_field :invite_code, :value => @invite_code %>
Run Code Online (Sandbox Code Playgroud)