Rails маршрутизация для удаления пространства имен - PullRequest
1 голос
/ 21 июля 2009

У меня есть модель страницы и page_controller в пространстве имен администратора. Мой файл маршрутов выглядит так:

  map.resources :pages, :only => [:index,:show]

  map.resources :admin, :only => [:index]

  map.namespace :admin do |admin|
    admin.resources :pages
  end

Я не могу найти правильный способ создания ссылки для удаления страницы (так же, как генератор скаффолдов создает ссылку удаления на странице индекса).

Есть идеи о правильных параметрах для функции link_to?

ТИА, Адам

1 Ответ

3 голосов
/ 21 июля 2009

rake routes ваш друг здесь. Он выложит список ваших сгенерированных маршрутов - особенно полезно, если у вас есть куча вложенных или пользовательских маршрутов.

пути будут

admin_pages_path #(with GET) routes to :controller => 'admin/pages', :action => 'index'
admin_pages_path #(with POST) routes to :controller => 'admin/pages', :action => 'create'
new_admin_page_path #(with GET) routes to :controller => 'admin/pages', :action => 'new'
edit_admin_page_path(:id) #(with GET) routes to :controller => 'admin/pages', :action => 'edit'
admin_page_path(:id) #(with GET) routes to :controller => 'admin/pages', :action => 'show'
admin_page_path(:id) #(with PUT) routes to :controller => 'admin/pages', :action => 'update'
admin_page_path(:id) #(with DELETE) routes to :controller => 'admin/pages', :action => 'delete'

Поэтому ссылка для удаления должна быть:

<%= link_to("delete page", admin_page_path(@page), :confirm => "sure you want to delete this page?", :method => :delete) %> 

Обратите внимание, что Rails будет использовать свой магический вызов to_param на @page, поэтому вам не нужно указывать @ page.id - полезно для такого примера, как вы часто хотите использовать постоянные ссылки для «страниц».

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