2010-01-11 7 views
0

Я пытаюсь получить разметку базовой маршрутизации Rails. У меня есть модель, называемая страницей, которую я создал с помощью эшафота. я добавил метод, называемый AddChild, который я хотел бы получить доступ черезRuby on rails paths and routes

'pages/addchild/:id' 

до сих пор так хорошо. Тем не менее, я хочу, чтобы создать ссылку на этот метод следующим образом:

<%= link_to 'Add child page', addchild_page_path(page) %> 

Передача ID текущей страницы в качестве параметра.

Когда я загружаю мой взгляд индекса (где связь есть), я получаю следующее сообщение:

undefined local variable or method `addchild_page_path' for #<ActionView::Base:0xb67797d0> 

ли я понял, как работает метод путь/link_to?

Мои маршруты файл выглядит следующим образом:

map.resources :pages 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

Любые советы будут оценены.

Спасибо.

ответ

2

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

Поскольку вы упомянули вы использовали строительные леса, вы, вероятно, настройки маршрута в качестве ресурса, так что все, что вам нужно сделать, это добавить метод:

map.resources :pages, :member => {:addchild => :get} 

даст вам addchild_pages_path (и фактический создатель путь будет выглядеть /pages/:id/addchild

затем вы можете использовать его как этот: addchild_pages_path page, не вызывать метод id непосредственно, поскольку он не находчив (вы не будете использовать to_param в классе страницы, которые вы можете захотеть сделать позже).

Если вы действительно хотите, чтобы URL, чтобы показать, как /pages/addchild/:id (который я не рекомендую), вы можете добавить

map.addchild_page "/pages/addchild/:id", :controller => :pages, :method => :addchild 

до map.resources :pages строки в вашем routes.rb, а затем использовать метод путь, как описано выше ,

+0

Спасибо. Да, я хотел, чтобы URL-адрес был отформатирован по умолчанию, я просто ошибся. – Dan