添加新控制器会在 Rails 中带来新的 Devise 身份验证错误
Adding a New Controller Brings a new Devise Authentication Error in Rails
我正在开发一个 Rails 应用程序,我与另一位初级开发人员共同编码。
我想为应用程序添加静态主页和静态帮助页面。
按照 Hartl 的说明 (https://www.railstutorial.org/book/static_pages#cha-static_pages),我为主页和帮助页面的应用程序添加了一个静态页面控制器。当我导航到 static_pages/home 时出现此错误:
NameError in Static_pages#home
Showing /vagrant/src/statuscaster2/app/views/layouts/application.html.erb where line #34 raised:
undefined local variable or method `devise_mapping' for #<#<Class:0xb9d6860c>:0xb9d7ad34>
Extracted source (around line #34):
31: <% if user_signed_in? %>
32: <%= link_to 'Sign Out', destroy_user_session_path, :method => :delete %>
33: <% else %>
34: <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
35: <%= link_to "Sign up", new_registration_path(resource_name) %>
36: <% end -%>
37: <% end %>
Devise 不开心。第 31 行询问应用程序访问者是否已登录,如果用户已注册则尝试将其注销。第 33 行向访问者发送注册机会。
我不知道如何处理这个问题,非常感谢 SO 社区的帮助。
在 froderik 的帮助下(参见有问题的评论)我已经弄明白了。
我以错误的方式思考问题,试图责怪 devise,而它只是按照它的指示去做。默认情况下,我的新静态页面使用应用程序布局。这加载了我的应用程序的导航栏。该导航栏充满了设计身份验证逻辑。
通过为静态页面创建一个新布局,然后告诉我的静态页面控制器使用该布局,我能够解决我的问题。
关于此 post 的第一个答案提供了 additional/related 信息。
Rails specify layout for static pages
我正在开发一个 Rails 应用程序,我与另一位初级开发人员共同编码。
我想为应用程序添加静态主页和静态帮助页面。
按照 Hartl 的说明 (https://www.railstutorial.org/book/static_pages#cha-static_pages),我为主页和帮助页面的应用程序添加了一个静态页面控制器。当我导航到 static_pages/home 时出现此错误:
NameError in Static_pages#home
Showing /vagrant/src/statuscaster2/app/views/layouts/application.html.erb where line #34 raised:
undefined local variable or method `devise_mapping' for #<#<Class:0xb9d6860c>:0xb9d7ad34>
Extracted source (around line #34):
31: <% if user_signed_in? %>
32: <%= link_to 'Sign Out', destroy_user_session_path, :method => :delete %>
33: <% else %>
34: <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
35: <%= link_to "Sign up", new_registration_path(resource_name) %>
36: <% end -%>
37: <% end %>
Devise 不开心。第 31 行询问应用程序访问者是否已登录,如果用户已注册则尝试将其注销。第 33 行向访问者发送注册机会。
我不知道如何处理这个问题,非常感谢 SO 社区的帮助。
在 froderik 的帮助下(参见有问题的评论)我已经弄明白了。
我以错误的方式思考问题,试图责怪 devise,而它只是按照它的指示去做。默认情况下,我的新静态页面使用应用程序布局。这加载了我的应用程序的导航栏。该导航栏充满了设计身份验证逻辑。
通过为静态页面创建一个新布局,然后告诉我的静态页面控制器使用该布局,我能够解决我的问题。
关于此 post 的第一个答案提供了 additional/related 信息。
Rails specify layout for static pages