Как мне указать действие над ресурсом в пространстве имен в rails 3? - PullRequest
1 голос
/ 17 мая 2010

У меня есть ресурс: товары в пространстве имен: shop, вот так:

namespace :shop do
  resources :products
  root :to => 'products#index'
end

При работе rake routes выдает следующее:

edit_shop_product GET    /shop/products/:id/edit(.:format) {:action=>"edit", :controller=>"shop/products"}

Но когда я использую edit_shop_product_path в частичном представлении, вот так:

<%= button_to "Edit", edit_shop_product_path(product) %>

Я получаю исключение ActionController: No route matches "/shop/products/1/edit"

Что мне не хватает?

Ответы [ 2 ]

1 голос
/ 23 мая 2010

Хорошо, я сам нашел ответ в конце. Проблема заключается в методе button_to, который по умолчанию генерирует HTTP-запрос POST. Изменив это на GET следующим образом:

<%= button_to "Edit", edit_shop_product_path(product), :method => :get %>

Или, используя метод link_to, он работает как рекламируется.

0 голосов
/ 19 мая 2010
  1. Создать каталог с именем shop в каталоге controllers/
  2. Создайте файл ruby ​​с именем products_controller.rb в каталоге магазина
  3. Назовите контроллер class Shop::ProductsController < BaseController
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...