4

所以我和之前的许多人一样,在我的应用程序中引入了“喜欢”项目的概念。可以喜欢许多不同类型的资源(帖子、回复、列表、操作等),我正在寻找构建路由文件的最佳方式。

这可能涉及制作一个看起来像这样的 routes.rb 文件:

resources lists do
  resources posts do
    resources replies do
      resources likes
    end
    resources likes
  end
  resources likes
end

还有一个 LikesController 不知道它是什么意思 load_and_authorize - ing:

class LikesController < ActionController:Base

  load_and_authorize :list # only works if list_id exists in this request
  load_and_authorize :post, through: :list # only works if post_id exists in this request

  # and so on...

end

有没有更好的方法来做到这一点?我曾想过只有一个 /likes 路径来发布所有内容,但这意味着我不能使用 load_and_authorize,也意味着更难以明智地为给定列表、帖子、回复等执行 Likes#index 之类的事情。

谢谢。

4

1 回答 1

0

不要在其他资源中嵌套喜欢,试试这个:

scope "/lists/:list_id(/posts/:post_id(/replies/:reply_id))" do
  resources :likes
end

我相信这应该为您提供一组 LikesController 路由,这些路由需要一个:list_id参数,并且可以选择采用 a:post_id和 a :reply_id。该 url 非常难看,但我只是想匹配四重嵌套 rails 资源路由的默认值。我建议稍微清理一下。

编辑:看起来这还需要你的 LikesController 中的一些额外逻辑——比如一个 before_filter ,它检测你有哪些参数并仅加载这些对象。但这对我来说似乎是一个可以解决的问题?

于 2012-09-19T14:00:22.417 回答