添加新控制器会在Rails中引发新的Devise Authentication Error

时间:2015-02-11 17:43:47

标签: ruby-on-rails ruby devise

我正在开发一个Rails应用程序,我与另一个Jr.开发人员共同编码。

我想在应用程序中添加静态主页和静态帮助页面。

按照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 %>

设计不开心。第31行询问应用程序访问者是否已登录并尝试在注册时将用户注销。第33行向访问者发送了注册的机会。

我不知道如何处理这个问题,并感谢SO社区的帮助。

1 个答案:

答案 0 :(得分:0)

在froderik的帮助下(见有问题的评论)我已经弄明白了。

我正在考虑错误的方式,试图责怪设计,当它只是按照它被告知要做的事情。我的新静态页面默认使用应用程序布局。这加载了我的应用程序的导航栏。该导航栏充满了设计认证逻辑。

通过为静态页面创建新布局,然后告诉我的静态页面控制器使用该布局,我能够解决我的问题。

这篇文章的第一个答案提供了额外/相关的信息。

Rails specify layout for static pages