我希望能够更好地理解rails routes文件,但由于它过于复杂,我无法自己理解。
基本上我有3个控制器。它们是:Admin,ManageProduct和ManageProductCategory(我有2个模型:Product,ProductCategory和model ProductCategory has_many / belongs_to产品关系)
管理控制器操作:
ManageProduct控制器操作:
ManageProductCategory
我希望能够管理我的应用程序路由,以便在输入浏览器时输入:
mywebsite/admin
mywebsite/admin/login
mywebsite/admin/logout
mywebsite/admin/manage_product
mywebsite/admin/manage_product_category/1
mywebsite/admin/manage_product/delete
mywebsite/admin/manage_product/10
等等......
问题是我无法弄清楚如何设置我的路由文件,以便rails知道admin / manage_product不是管理员控制器动作......
注意:一切都已经有效(两个型号的CRUD以及通过标准推荐路线的行动链接
match ':controller(/:action(/:id(.:format)))'
非常感谢您的帮助和关注
此致
答案 0 :(得分:2)
您需要的是命名空间
# Rails 2.3.x
map.namespace :admin do |admin|
map.resources :products
end
# Rails 3
namespace "admin" do
resources :products
end
这将为您提供以下URL帮助程序方法:
admin_products_path GET { :controller => "admin/products", :action => "index" }
new_admin_product_path GET { :controller => "admin/products", :action => "new" }
admin_products_path POST { :controller => "admin/products", :action => "create" }
要在admin命名空间下生成控制器,您需要在控制台下执行以下操作:
$ rails generate controller admin/products
这将为您生成admin
下的app/controllers
目录,然后生成products.rb
文件:
class Admin::ProductsController < ApplicationController
end
现在,在admin命名空间下的登录,您可以使用Devise进行设置,这是一个用于身份验证的gem。您可以在此处进一步了解:https://github.com/plataformatec/devise/wiki/_pages