私は使用しています 考案する そして実装し始めた omniauth-instagram。 しかし、私は読んでエラーが出続けます:
uninitialized constant Users::Auth::Instagram::CallbackController
私は自分の設定のどの部分が間違っているのかわからないので、自分のroutes.db、omniauth_callbacks_controllers.rb、およびdevise.rbからの抜粋を参考のために含めました。
正しい方向への任意のポイントは大歓迎です!
routes.db
devise_for :users, :controllers => { :omniauth_callbacks => "users/auth/instagram/callbacks" }
/controllers/users/omniauth_callbacks_controllers.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def instagram
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_oauth(request.env["omniauth.auth"], current_users)
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
set_flash_message(:notice, :success, :kind => "Instagram") if is_navigational_format?
else
session["devise.instagram_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
devise.rb
config.omniauth_path_prefix = "users/auth/instagram/callbacks"
回答:
回答№1は0命名規則が間違っていることに気付きました。
助けを借りて この前の質問、私は私のファイル名が私のルートとパスが参照していたクラス名と一致しないことに気づきました。
たとえば、routes.rbとdevise.rbはどちらもpathを参照していました。
"users/auth/instagram/callbacks"
前後の私のクラスファイル名:
users/auth/instagram/omniauth_callbacks_controllers.rb
users/auth/instagram/callbacks_controllers.rb
私の中のクラス名が callbacks_controllers.rb
また、適切に、ファイルのパスを反映します。
class Users::Auth::Instagram::CallbacksController
回答№2の場合は0
あなたのdevise.rbを見れば:
config.omniauth_path_prefix = "users/auth/instagram/callbacks"
そしてあなたのroutes.rb:
devise_for :users, :controllers => { :omniauth_callbacks => "users/auth/instagram/callbacks" }
両方を指す Users::Auth::Instagram::CallbacksController
あなたが定義している間:
class Users::OmniauthCallbacksController
内部 /controllers/users/omniauth_callbacks_controllers.rb
これはする必要があります: /controllers/users/auth/instagram/callbacks_controllers.rb
そしてあなたのクラスは次のように変わるはずです。
class Users::Auth::Instagram::CallbackController < Devise::OmniauthCallbacksController
または削除する /auth
両方(routes.rbとdevise.rb)から場所とそれが動作するかどうかを確認しますか?