link_to "about", about_path показывает ошибку в ROR - PullRequest
0 голосов
/ 28 июля 2010

Я работаю в Ruby на рельсах .. Я новичок в этом ..

Я использовал строку

   <%= link_to "about",about_path %>

    which throws me a error as,

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

У меня есть страница about.html в app /views / pages /

Пожалуйста, дайте несколько советов, почему я так поступаю.

Ответы [ 4 ]

5 голосов
/ 03 июня 2015

У меня просто была такая же проблема с использованием учебника Хартла. Вот что я сделал.

При запросе 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 %>, как предполагает руководство Хартла.

РЕДАКТИРОВАТЬ:

Хорошо, теперь я понимаю. Это потому, что маршруты были определены так:

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  %>
3 голосов
/ 28 июля 2010

Ваш код ищет то, что называется именованным маршрутом.Вы должны определить их в config/routes.rb.Кроме того, вам понадобится контроллер и действие для их обработки.См. сообщение , описывающее очень простой способ обработки статических страниц в качестве иллюстрации.

Чтобы получить именованный маршрут about_path, добавьте его к routes.rb

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

Затем добавьте содержимое страницы about в файл с именем app/views/pages/about.html.erb

Наконец:

$ rake routes

расскажет вам обо всех именованных маршрутах, определенных для вашего приложения, и оделать

2 голосов
/ 28 июля 2010

Я полагаю, ваша страница "статическая". Проверьте это ..

routes.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

1 голос
/ 28 июля 2010

Есть ли в вашем rout.rb что-то вроде map.resources: about?

Если вы не знаете, почему он должен быть там или что это, читайте о RESTful Routing на руководствах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...