所以,就像我之前的许多人一样,在我的应用程序中引入“喜欢”项目的概念。可以使用许多不同类型的资源(帖子,回复,列表,操作等),我正在寻找构建路由文件的最佳方法。
这可能涉及制作类似于:
的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
有没有更好的方法呢?我曾想过只有一个/喜欢的路径,所有内容都会发布,但这意味着我不能使用load_and_authorize,这也意味着更难理智地做一些事情,如Likes#index给定列表,发布,回复等。
感谢。
答案 0 :(得分:0)
不要在其他资源中嵌套喜欢,试试这个:
scope "/lists/:list_id(/posts/:post_id(/replies/:reply_id))" do
resources :likes
end
我认为应该为您提供一组LikesController路线,这些路线需要:list_id
参数,并且可选择:post_id
和:reply_id
。该网址相当丑陋,但我只是尝试匹配四重嵌套的rails资源路由的默认值。我建议稍微清理一下。
编辑:看起来这还需要你的LikesController中的一些额外逻辑 - 就像before_filter一样,它可以检测你得到了哪些参数,并且只对那些对象进行load_and_authorizes。但这对我来说似乎是一个可以解决的问题?