0

我的会话控制器中有一个omniauth_create动作。它将用户重定向到一个名为enter_email.html.erb的视图并将一些传递给重定向(从omniauth获取):params

  def omniauth_create
    auth = request.env["omniauth.auth"]
    user = User.from_omniauth(env["omniauth.auth"])
    .
    .
    .
    else
      redirect_to(enter_email_path(oprovider: user.provider,
                                   ouid: user.uid,
                                   oname: user.name,
                                   opassword: user.password,
                                   opassword_confirmation: user.password))
    end
  end

它们在隐藏字段中使用的位置(基本上是注册表单):

<%= form_for(@user) do |f| %>
      <%= render 'shared/error_messages', object: f.object %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.hidden_field :provider, value: params[:oprovider] %>
      <%= f.hidden_field :provider, value: params[:oprovider] %>
      <%= f.hidden_field :uid, value: params[:ouid] %>
      <%= f.hidden_field :name, value: params[:oname] %>
      <%= f.hidden_field :password , value: params[:opassword] %>
      <%= f.hidden_field :password_confirmation, value: params[:opassword_confirmation] %>

      <% # To know to which form to redirect in case of validation error %>
      <%= hidden_field_tag 'form_name', 'enter_email' %>

      <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
    <% end %>

现在的问题是,当出现验证错误时(例如,电子邮件已被占用)。视图呈现enter_emailparams从隐藏字段(从值)中清除。

所以我正在考虑将数据存储在会话中,而不是通过redirect_to我从未以这种方式使用过会话的方式传递它们,所以我有点迷茫(我什至不确定如果我将数据存储在会议?)

谁能给我一个提示或一个例子?

4

0 回答 0