先简单说一下我的情况:有一个posts的controller,它负责CRUD等一系列操作,现在有一个需求是列出“我评论过的文章”的列表,最初我是这样设计的
in app/controllers/posts_controller.rb
def my_replied # ignore codes end
这样写有一个好处,就是产生的路由很易懂,如浏览器的地址栏会显示/posts/my_replied,在ERB文件中书写路由时是my_replied_posts_path,这甚至和英文表达的方式几乎一致,所以这是一种漂亮的表达方式。
现在突然需要列出很多和“我的”相关的需求,如“我小组中的文章”,“我回答过的”,“我自己发表的”等等,所以我打算把这个controller移到目录my下面,变成了app/controllers/my/posts_controller.rb,这时的action还和上面一样,但路由的写法就变了
in routes.rb
namespace :my do resources :posts do collection do get :my_replied end end end
这时在地址栏显示的内容就成了/my/posts/my_replied,看,有一个多余的“my”,在ERB文件中显得更加不易读,变成了my_replied_my_posts_path。
不知道各位是否遇到过这个情况,或者在这个过程中我是否做了不必要的东西?
问题补充
这样貌似不能将那个前缀隐藏吧, 它只会给路由添加额外的字符串
ps: 我当时在设计这个路由的时候还考虑了这么一个情况, 即通过路由可以猜到对应的文件在哪, 这样也算是易读的其中一方面吧. 所以隐藏"my"后感觉不是一个好的办法.
不知道这样是不是有点自己和自己矛盾了