如何设计一个漂亮的路由

2019-03-25 13:40|来源: 网路

    先简单说一下我的情况:有一个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。

     不知道各位是否遇到过这个情况,或者在这个过程中我是否做了不必要的东西?


问题补充
ddl1st 写道
用path_prefix => '',把文件名隐藏

这样貌似不能将那个前缀隐藏吧, 它只会给路由添加额外的字符串

ps: 我当时在设计这个路由的时候还考虑了这么一个情况, 即通过路由可以猜到对应的文件在哪, 这样也算是易读的其中一方面吧. 所以隐藏"my"后感觉不是一个好的办法.
不知道这样是不是有点自己和自己矛盾了

相关问答

更多