Вложенные именованные маршруты в рельсах? - PullRequest
2 голосов
/ 22 января 2010

Допустим, у вас есть две модели с сообщениями в блогах и комментариями, настроенными следующим образом:

class post 
has_many :comments

и маршрутизация была настроена почти так же:

map.resources :posts, :has_many => :comments

Когда я иду, чтобы сделать новый комментарий, он отображается как localhost :: 3000 / postname / comments / new

Что нужно сделать, чтобы URL читался примерно так: localhost :: 3000 / postname / shoutout?

Причина, по которой я хочу это сделать, заключается в том, что на этой конкретной странице будет больше, чем просто новая форма комментария.

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

Ответы [ 2 ]

3 голосов
/ 22 января 2010
map.resources :posts, :has_many => :comments, :collection => {:shoutout => :get}

Ключевой особенностью является :collection, которая указывает пары: 'name' => 'method', и вам нужно внедрить это имя в контроллер (и представления)

2 голосов
/ 22 января 2010

Маршруты не имеют ничего общего с формами на странице, я не уверен, в чем проблема?

Если вы хотите, чтобы /postname/shoutout перешел на CommentsController # new, вам нужно будет сопоставить маршрут вручную:

map.connect '/:post_id/shoutout', :controller => 'comments', :action => 'new'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...