Ошибка Нет маршрутов соответствует [GET] "/ root_path" в рельсах 3.1.3 - PullRequest
0 голосов
/ 29 декабря 2011

Я использую учебник по Rails с примером книги Майкла Хартла в качестве ссылки на этот вопрос.

Здесь я использую рельсы 3.1.3. Каков наилучший способ использования именованных маршрутов

routes.rb

 root :to => "pages#home"
  match '/contact', :to => 'pages#contact' 
  match '/about', :to => 'pages#about'      
  match '/help', :to => 'pages#help' 

Когда я получаю доступ к этим маршрутам из представления с использованием о, я не нахожу ошибки, но когда я получаю доступ к нему по "about_path", я получаю ошибку. Но в книге они используют about_path. Изменилась ли концепция названных маршрутов в рельсах 3.1?

        <li><%= link_to "About", '*about*' %></li>
        <li><%= link_to "Contact", 'contact' %></li>
        <li><%= link_to "Home", 'root_path' %></li>

Если я использую "about_path" в приведенном выше коде, я получаю сообщение об ошибке "маршрут не найден"

Вопрос 1. Как лучше всего использовать именованные маршруты внутри представлений? (Лучший способ означает, что мне нужно только изменить маршрут в одном месте)

Вопрос 2. Как я могу получить доступ к root с концепцией именованных маршрутов? (Я получаю сообщение об ошибке, когда пытаюсь получить к нему доступ, используя root_path).

Ответы [ 5 ]

5 голосов
/ 18 января 2012

Вы должны опустить "'" arround ... путь, я думаю.

3 голосов
/ 29 декабря 2011
  • убедитесь, что корень первый.

  • в командной строке введите rake routes, чтобы увидеть, какие у вас есть маршруты и переменные _path.

  • удалить :to, но оставить хеш-ракету => (за исключением root! - оставьте :do там)

2 голосов
/ 02 мая 2013

(1) В rout.rb

match '/ about' => 'pages # about'

автоматически создаст переменную about_path , в котором хранится ваше имя пути. Кстати, ваше имя пути отличается от вашего URL.Инструкция маршрутизации буквально инструктирует rails, что всякий раз, когда кто-то печатает / about в качестве URL, rails должен выполнить действие about , как определено в контроллере pages .Кроме того, эта инструкция хранится в сокращенном виде в неявном названном маршруте about_path , который создается rails путем объединения имени метода about со строкой _path без какого-либо вмешательствас вашей стороны.

(2) Вы будете использовать эту переменную в ... app / views / layouts / _footer.html.erb

<% = link_to"About", about_path%>

и то же самое в ... app / views / layouts / _header.html.erb

(3) In ... spec/requests/static_pages_spec.rb, вы будете использовать

описать "О странице" и сделать
до {посещение about_path}

И да, если вы действительно понимаете маршрутизациювы понимаете 90% дизайна рельсов, поэтому убедитесь, что вы понимаете содержимое маршрутов.

1 голос
/ 06 августа 2012

Удалить кавычки из переменных пути, т.е. использовать это в файле .erb:

    <li><%= link_to "About", about_path %></li>
    <li><%= link_to "Contact", contact_path %></li>
    <li><%= link_to "Home", root_path %></li>
0 голосов
/ 29 декабря 2011
JP:guard2 jayparteek$ rake routes
   root  /                  {:controller=>"pages", :action=>"home"}
contact  /contact(.:format) {:controller=>"pages", :action=>"contact"}
  about  /about(.:format)   {:controller=>"pages", :action=>"about"}
   help  /help(.:format)    {:controller=>"pages", :action=>"help"}

Доступ к именованным маршрутам из представлений

    <li><%= link_to "About", 'about' %></li>
        <li><%= link_to "Contact", 'contact' %></li>
        <li><%= link_to "News-Home", '/' %></li>

Маршруты

  match '/contact' => 'pages#contact' 
  match '/about' => 'pages#about'      
  match '/help' => 'pages#help' 

  root :to => "pages#home"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...