rails3 cancan load_resource用于自定义操作

时间:2013-01-22 15:56:21

标签: ruby-on-rails-3 cancan custom-action

我在我的应用程序中使用cancan 1.6.8。

我必须在自定义方法中创建一个Cart。所以我在routes.rb中添加了自定义操作。例如:

resources :carts
   collection do
     get "new_cart"
     post "create_cart"
   end
end

如何使用 load_resource 为我的自定义方法(new_cart,create_cart)初始化新对象(@cart = Cart.new)?

2 个答案:

答案 0 :(得分:3)

:new:new之外,指定:create哪些操作是新的资源操作。 如果您想构建一个新资源而不是获取一个资源,请将操作名称传递到此处。

示例:

load_resource :new => [:new_cart, :create_cart]

参考http://rdoc.info/github/ryanb/cancan/master/CanCan/ControllerAdditions/ClassMethods:load_resource

答案 1 :(得分:-3)

我猜你是Rails的新手。

当您创建路线时,您实际上并未创建动作,您只需为应用创建一种方式来响应该给定路径。

由于Rails“魔术”,你可以通过创建一个与你定义的路径名称相同的控制器动作来定义路线的作用。

因此,在您的情况下,您应该在carts_controller中创建动作new_cart和create_cart

此外,当您调用Cart.anything时,您实际上正在调用该模型方法,再次,由于Rails魔法往往是数据库中的列或您在模型文件中明确定义的方法...

如果要在该操作中创建新对象,只需转到控制器中的操作并创建新购物车。您不需要load_resource。

希望有所帮助。