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