设计Omniauth未定义的方法omniauth_authorize_path

kam*_*mbi 9 devise omniauth ruby-on-rails-3.2

我注意到,当记录到Devise时,我已经开始收到这些错误消息.

我正在使用Devise 2.2.4与Omniauth 1.1.4和Omniauth-Facebook 1.4.1

有谁知道这个错误的原因是什么?

  ActionView::Template::Error (undefined method `omniauth_authorize_path' for #<#<Class:0xb85e534>:0xb904e5c>):
21: <%- if devise_mapping.omniauthable? %>
22:   <%- resource_class.omniauth_providers.each do |provider| %>
23:     <% logger.info "hey #{provider} , dolphin and #{resource_name}" %>
24:     <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
25:   <% end -%>
26: <% end -%>

  app/views/devise/shared/_links.erb:24:in `block in _app_views_devise_shared__links_erb___1039642231_94147460'
  app/views/devise/shared/_links.erb:22:in `each'
  app/views/devise/shared/_links.erb:22:in `_app_views_devise_shared__links_erb___1039642231_94147460'
  app/views/devise/sessions/new.html.erb:17:in `_app_views_devise_sessions_new_html_erb__883448937_92868060'
Run Code Online (Sandbox Code Playgroud)

lul*_*ala 14

一个可能的错误是omniauth配置设置在错误的位置.

我遇到了这个错误,因为我config/initializers/omniauth.rb按照omniauth自述文件的说明设置了我的Facebook帐户.

但是我们需要通过设计来设置它,即config/initializers/devise.rb在omniauth部分.


Jus*_*ier 11

我今天(2016年7月27日)开始收到此错误,当时我升级到Ruby 2.3.1和Rails 4.2.7.为我工作的解决方案是改变的所有实例user_omniauth_authorize_path(:twitter)user_twitter_omniauth_authorize_path.

  • 此处相同,似乎是装置4.x中的更改。将devise降级到3.5.6已为我修复。 (2认同)

Ash*_*aka 5

尝试

user_omniauth_authorize_path(provider)
Run Code Online (Sandbox Code Playgroud)

我假设您有一个 User 类,并且在您的路由文件中

devise_for :users
Run Code Online (Sandbox Code Playgroud)