【问题标题】:NameError in StaticPages#home静态页面中的名称错误#home
【发布时间】:2016-09-13 01:30:16
【问题描述】:

在 routes.rb 中执行以下操作后,我得到了“NameError”

Rails.application.routes.draw do
  root 'static_pages#home'
  get '/help',    to: 'static_pages/help'
  get '/about',   to: 'static_pages/about'
  get '/contact', to: 'static_pages/contact'
  get '/sigunup', to: 'users#new'

end

有人可以帮帮我吗?谢谢。

Showing /home/bdme551/bdme21/app/views/layouts/_header.html.erb where line #7 raised:

undefined local variable or method `help_path' for #<#<Class:0x007f7474f3d208>:0x007f747555c508>
Extracted source (around line #7):


      <ul class="nav navbar-nav navbar-right">
        <li><%= link_to "Home",   root_path %></li>
        <li><%= link_to "Help",   help_path %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>

StaticPagesController 有以下内容:

class StaticPagesController < ApplicationController
  def home
  end
  def help
  end
  def about
  end
  def contact
  end
end

【问题讨论】:

  • 当出现该错误时,您想触发什么?你的路线很好。但是如果你试图触发contact,你的控制器名称是拼写错误。

标签: mysql ruby-on-rails ubuntu passenger production


【解决方案1】:

问题是您尚未为自定义 GET 路由定义名称。如果你运行rake routes,除了root之外,你不应该为任何路由找到prefix

您可以使用 as 选项为自定义路由添加名称。

get '/help',    to: 'static_pages#help', as: :help

请注意,在您的代码中,您将 static_pages/help 作为 to 选项的值。

应该是static_pages#help# 指的是实例方法。

现在,如果您尝试运行rake routes,您应该会发现help 作为/help 路由的前缀。

另外,通过将 / 替换为 # 来修复其他路由定义。

【讨论】:

  • 感谢您纠正错字。我继续在 routes.rb 文件中进行了更改。我已经更新了问题。
  • 当我运行 rake 路由时,我收到以下消息:ArgumentError: Missing :controller key on routes definition, please check your routes.
猜你喜欢
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多