0

尝试使用用户身份验证时,我收到以下错误:“Viewer#show 中的 NoMethodError”。并将错误解决到<%= @page.body.html_safe%> in app/views/viewer/show.html.erb:1:in '_app_views_viewer_show_html_erb__685858346_34780128',现在只有一行代码。

但是,当我在浏览器地址栏上调用登录页面时,例如::3000/session/new,它会出现。这不会发生在:3000/session/destroy.

似乎与路线相关的某些东西无法正常工作,因为另一方面,当我views/layouts/application.htm.erb<li><%= link_to 'Home', {:controller => 'viewer', :action => 'show', :name => 'home'} %></li>它一样调用页面时,如果我切换到<li><%= link_to 'Home', view_page_path('home') %></li>它会给出类似的错误。

我该如何解决?

4

1 回答 1

0

您的使用view_page_path('home')假设有一个命名路径view_page。改变

get "/:name" => 'viewer#show'

get '/:name' => 'viewer#show', :as => :view_page

应该解决这个问题。

其次,当使用带有命名参数的路由助手时,您需要指定名称,以便 Rails 知道应该使用哪些参数。更改view_page_path('home')view_page_path(:name => 'home')

最后一个 NoMethodError for<%= @page.body.html_safe%>向我暗示要么@page或要么@page.body为零。

于 2013-07-03T15:47:06.850 回答