我对Rails相当新。
我想跟踪帖子的阅读频率,以便按照受欢迎程度对其进行排名。因此,我将在read_count
表中有一个数据库列posts
,每次调用#show时它会递增1。
但是,如果管理员已登录并希望通过#show方法预览帖子,我不希望read_count
增加。
我认为在params散列中传递preview=true
等自定义参数是最好的。然后,如果read_count
评估为false或nil,#show只会增加preview
。但是,我该怎么做?将preview=true
添加到params哈希的正确方法是什么?
或者在控制器上实现#preview方法会更好吗?
答案 0 :(得分:2)
做类似的事情:
@post.read_count.increment! unless user_signed_in? && current_user.admin?
答案 1 :(得分:1)
为什么不通过控制器动作本身而不是发送参数?如果它被命中并且不是管理员,那么递增计数,似乎是一个更简单的解决方案。
答案 2 :(得分:1)
下面的答案之一可能是一种更好的方法,但要回答你如何传递额外参数的问题。您可以将它们添加到网址助手的末尾,因此如果现有链接如下所示:
link_to'显示',post_path(id)
只需将其更改为:
link_to'Phow',post_path(id)+'?preview = true'