0

我正在使用 Ruby on rails 工作。我对此很陌生。

我用了一条线

   <%= link_to "about",about_path %>

    which throws me a error as,

    undefined local variable or method `about_path' for #<ActionView::Base:0xb5f5baa8>

我在 app/views/pages/ 下有 about.html 页面

请就我为什么会这样提出一些建议。

4

4 回答 4

5

我在使用 Hartl 的教程时遇到了同样的问题。这就是我所做的。

问的时候rake routes,我有:

tomsihap-MBP:sample_app tomsihap$ rake routes
              Prefix Verb URI Pattern                     Controller#Action
                root GET  /                               static_pages#home
   static_pages_help GET  /static_pages/help(.:format)    static_pages#help
  static_pages_about GET  /static_pages/about(.:format)   static_pages#about
static_pages_contact GET  /static_pages/contact(.:format) static_pages#contact

那么正确的路径是:

<%= link_to "About",   static_pages_about_path  %>

而不是<%= link_to "About", about_path %>Hartl 的指南所建议的。

编辑 :

好的,现在我明白了。那是因为路由是这样定义的:

Rails.application.routes.draw do 
root 'static_pages#home'
get 'static_pages/help' 
get 'static_pages/about' 
get 'static_pages/contact'

而不是,稍后在教程中解释:

Rails.application.routes.draw do 
root 'static_pages#home' 
get 'help' => 'static_pages#help' 
get 'about' => 'static_pages#about' 
get 'contact' => 'static_pages#contact'

使用这种方式,现在正确的路径是:

<%= link_to "About", about_path  %>
于 2015-06-03T14:41:07.413 回答
3

您的代码正在寻找所谓的命名路由。您需要在config/routes.rb. 此外,您将需要一些控制器和操作来处理它们。请参阅这篇文章,通过插图描述了一种处理静态页面的非常简单的方法。

要获取about_path命名路线,您可以将其添加到routes.rb

map.about "/pages/about", :controller => "pages", :action => "show", :id => "about"

然后将您的关于页面内容添加到名为app/views/pages/about.html.erb

最后:

$ rake routes

告诉您为您的应用程序定义的所有命名路由以及它们的作用

于 2010-07-28T11:41:31.160 回答
2

我猜你的关于页面是“静态的”。检查这个..

路线.rb

# rails 2.3.x
map.about "/pages", :controller => 'pages', :action => 'about'

控制器/pages_controller.rb

class PagesController < ApplicationController
  def about # not needed, only for "tidiness"

  end
end

...并且您的 erb 文件必须在此处: Views\pages\about.html.erb

于 2010-07-28T11:38:05.083 回答
1

在您的 routes.rb 中是否有类似 map.resources :about 的内容?

如果您不知道为什么它应该在那里或那是什么,请阅读指南上的 RESTful Routing 。

于 2010-07-28T11:34:01.213 回答