Где определена эта переменная posts_path? - PullRequest
4 голосов
/ 24 января 2009

Я следую этому учебнику (кажется, хорошо) для Rails. После того, как я бегу

ruby script/generate scaffold Post

тогда эта ссылка работает в одном из файлов erb:

<%= link_to "My Blog", posts_path %>

ПОЧЕМУ? Я искал "posts_path" во всем приложении, и его нигде нет. С другой стороны, это

<%= link_to "My Blog", home_path %>

не работает , не , и это также контроллер.

Где определяется posts_path?

Ответы [ 3 ]

14 голосов
/ 24 января 2009

posts_path - это именованный маршрут, который вы получаете бесплатно по маршруту, добавленному script/generate scaffold. Смотрите routes.rb вы должны увидеть что-то вроде этого:

map.resources :posts

См. Документацию API для получения информации о том, какие другие именованные маршруты вы получаете бесплатно.

Также вы можете запустить rake routes и посмотреть, что вам дают все ваши routes.rb.

Если вы хотите маршрут с именем home_path, добавьте такую ​​строку в ваш routes.rb:

map.home '/home', :controller => "home", :action => "index"
1 голос
/ 24 января 2009

map.root :controller => "home" будет более коротким способом записи пути к вашему домашнему каталогу. Это будет использовать / имеет дома, а не / дома. Если вы все еще хотите использовать / home (и home_path), map.home 'home', :controller => "home" сделает то же самое.

Существует замечательное руководство, написанное Майком Гандерлой обо всем, что можно знать о маршрутизации.

1 голос
/ 24 января 2009

Я считаю, что "posts_path" динамически создается Rails во время выполнения. Посмотрите на ваш файл rout.Rb - Домой, вероятно, не определяется так же, как сообщения. Это не имеет никакого отношения к вашим контроллерам, это зависит от определения маршрута.

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