には私がomniauth宝石を使用してInstagramのログインを実装しています...私は、私はかなりの時間のための答えを見つけることができていない問題を抱えているRailsの5
を後者の反復でインスタンス変数をキープしかし、このWebアプリケーションに特に必要な電子メールやユーザーの年齢など、Instagramが提供する情報には限界があります。
私がしようとしているのは、すべての可能なデータをInstagramから取得し、ユーザーを別のビューにリダイレクトして、年齢と電子メールの両方を提供できることです。
私はユーザーのデータを共有する必要があるコントローラを2つ使用していますが、2番目のコントローラメソッドでこの変数の内容を使用する必要がある場合、varはNilに設定され、再構築に使用できるメソッドはありませんそのデータは実際にデータベースに保存されていません。ここで
は、いくつかのコードです:ここで
class SomeOAuthController < Devise::OmniauthCallbacksController
...
#This controller retrieves the oauth data and has a view to retrieve all the extra data.
def instagram
@user_ig = User.from_omniauth_instagram(request.env["omniauth.auth"])
if @user_ig.provider != :instagram.to_s
redirect_to root_path
end
end
#Método para completar el registro de instagram
def create_instagram_user
p 'entro a create_instagram_user'
p @user_ig
#@user_ig.adult = params[:user][:adult]
#@user_ig.email = params[:user][:email]
end
...
は、Instagramの方法のための図である。
<%= form_for(@user_ig, url: {action: :create_instagram_user}) do |f| %>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :adult %>
<%= f.check_box :adult %>
</div>
<div class="actions">
<%= f.submit t('bulula.session.sign_up') %>
</div>
ので、それを包む:
問題
instagram
メソッドで埋め込まれた変数を、instagram
のビューボタンを送信してデータベースに保存せずに呼び出すことによって呼び出されるcreate_instagram_user
メソッドで使用するには、変数Nilを使用しないでください。私は私がInstagramのから取得し、不完全なコンテンツを保存し、データをユーザにそれに沿って移動することができます一時データベーステーブルを作成するために期待していた、ここで任意の解決策を見つけることができない場合には
回避策ソリューション
フォームから提供し、新しいユーザーを作成します。
これはややこしいと思われますが、私はそれには完全に満足していません。
ありがとうございました!次のようにそれを行うには
私は恐れています 'key1'、 'key2'、 'key3'はCookieが保存されないようにします –