Ruby on Rails路径感知

时间:2011-08-17 08:07:14

标签: ruby-on-rails ruby actionview

让我们考虑以下情况。 有 products_controller ,可以从Ruby on Rails应用程序的“Admin”和“Configure”部分访问。

在视图中,我需要区分我当前所在的部分(即“Admin”或“Configure”)。什么是实现正确结果的最佳做法?

想到几个解决方案?

  1. 将“referrer”选项附加为参数并使用它来区分我来自哪里(我认为这将是超级丑陋并打破休息的本质)。

  2. 在控制器中创建单独的操作对(即 new / create admin_new / admin_create )。

  3. 在特定情况下,什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

如果仅用于记录目的,添加参数就足够了。

如果处理事物的逻辑取决于用户来自何处,请选择映射到不同操作的不同路线。

如果您不想添加参数,但它是用于记录目的,您还可以创建非传统路线:

 resources :products, :except => [:new, :create] do
   collection do
     get  products/new(/:section) => "products#new"
     post products(/:section) => "products#craete"
   end
 end

现在您可以拥有new_message_path(:section => "admin"),这将导致路径/products/new/admin,您将:section中提供params[:section]