我的会话控制器中有一个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_email
并params
从隐藏字段(从值)中清除。
所以我正在考虑将数据存储在会话中,而不是通过redirect_to
我从未以这种方式使用过会话的方式传递它们,所以我有点迷茫(我什至不确定如果我将数据存储在会议?)
谁能给我一个提示或一个例子?