新手问题 在 url 中传入关键值,而后在 controller 中对 params 进行判断按需返回数据,这种做法好吗?

ahr0u · 2014年10月08日 · 最后由 ahr0u 回复于 2014年10月10日 · 2500 次阅读

举个栗子吧。

譬如我有个 posts 的表,其中有个 status 状态字段,其中的值有 draft, new, pending

在 front.html.erb 中有三个链接,在链接中传入了 status 关键值,<%= link_to "Draft Posts", posts_path(status: draft) %>

而在 controller 中,通过判断 params 来取出相对应的值

when params[:status]
case 'draft'
  Post.where(status: draft)
...

虽然我需要的功能实现了,但这样做好吗?怎么做才是最好的呢?

之所以我觉得有点怪怪的是因为:

  1. rails 好像比较注意 url 的美观,我将这些值都以/?status=xxx 的形式传过来貌似不怎么美观
  2. controller 的部分好像比较臃肿,譬如我很 7 个状态,那就有 7 个 switch 语句的分支

如果 status 是 enum 类型,controller 里@posts = Post.send params[:status]

#1 楼 @piecehealth 谢谢,这个细节我会注意,整个实现方式这样做好吗?之所以我觉得有点怪怪的是因为:

  1. rails 好像比较注意 url 的美观,我将这些值都以/?status=xxx 的形式传过来貌似不怎么美观
  2. controller 的部分好像比较臃肿,譬如我很 7 个状态,那就有 7 个 switch 语句的分支

#1 楼 @piecehealth 直接 send params 这是真的勇士啊……

看来我的做法貌似可行

需要 登录 后方可回复, 如果你还没有账号请 注册新账号