让我们考虑以下情况。 有 products_controller ,可以从Ruby on Rails应用程序的“Admin”和“Configure”部分访问。
在视图中,我需要区分我当前所在的部分(即“Admin”或“Configure”)。什么是实现正确结果的最佳做法?
想到几个解决方案?
将“referrer”选项附加为参数并使用它来区分我来自哪里(我认为这将是超级丑陋并打破休息的本质)。
在控制器中创建单独的操作对(即 new / create 和 admin_new / admin_create )。
在特定情况下,什么是正确的方法?
答案 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]
。