使用不同控制器为相同资源进行冗余路由,解决“错误”URL

时间:2010-01-29 20:14:55

标签: ruby-on-rails routing

我有一个商店模型。还有两个控制器:

  • stores_controller
  • 管理员/ stores_controller

现在在admin / stores_controller的列表视图中我试图在admin / stores_controller中生成一个指向destroy动作的链接,但是我尝试过的每个变体都要转到stores_controller(所以不是admin一个)或者一些其他不正确的网址。

我现在正在使用

<%= link_to "Delete", :controller => "admin/stores", 
            :action => "destroy", :id => store, :method => :delete %>

但这会生成一个类似http://localhost:3000/admin/stores/5?method=delete的网址,它会调用show动作而不是destroy动作。

在routes.rb中

我有

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

map.resources :stores

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您有命名空间,请使用link_to,如下所示:

link_to 'Show', [:admin, @var]

同样,如果您想引用表单:

form_for([:admin, @var])