如何覆盖:自定义路由的path_names

时间:2011-10-26 12:05:38

标签: ruby-on-rails ruby-on-rails-3 routes

我已经用英语实现了RESTFUL路由,但该应用程序适用于德国用户,所以路由应该重命名为德语。我使用:path_names选项和CRUD路由执行此操作,但这对我自己创建的路由不起作用。例如,模型SingleBudget具有从n..n关联中删除特定对象的操作。在我的routes.rb中,它看起来像这样:

resources :single_budgets, :path => 'einzelbudgets', :path_names => { :new => 'neu', :edit => 'aendern', :remove => 'entfernen' } do
     collection do
          get ':id/remove' => "single_budgets#remove", :as => :remove
     end
end

它适用于新操作和编辑操作,但不适用于删除操作。有人知道如何解决它吗?

1 个答案:

答案 0 :(得分:2)

:path_names参数只会影响内置的CRUD操作。对于您的自定义操作,只需在get参数中调用它即可:

get ':id/entfernen' => "single_budgets#remove", :as => :remove

这将为您提供一个remove_single_budgets路径,该路径将指向/single_budgets/:id/entfernen,它将在您的控制器中执行remove方法。