1

我对 Rails 相当陌生。

我想跟踪一篇文章的阅读频率,以便按受欢迎程度对它们进行排名。因此,我将read_countposts表中有一个数据库列,每次调用#show 时都会增加 1。

但是,如果管理员已登录并想通过 #show 方法预览帖子,我不希望read_count增加。

我认为传递一个自定义参数,例如preview=true在 params 哈希中是最好的。read_count然后,#show 只有在preview评估为 false 或 nil时才会增加。但是,我该怎么做呢?preview=true添加到 params 哈希的正确方法是什么?

或者在控制器上实现#preview 方法会更好吗?

4

3 回答 3

2

怎么样做类似的事情:

@post.read_count.increment! unless user_signed_in? && current_user.admin?
于 2012-08-27T22:06:42.037 回答
1

为什么不通过控制器操作本身来发送参数而不是发送参数呢?如果它被击中并且不是管理员,那么增加计数,似乎是一个更简单的解决方案。

于 2012-08-27T22:06:02.213 回答
1

以下答案之一可能是更好的方法,但要回答您如何传递额外参数的问题。您可以将它们添加到 url 帮助程序的末尾,因此如果您现有的链接如下所示:

link_to '显示',post_path(id)

只需将其更改为:

link_to '显示',post_path(id) + '?preview=true'

于 2012-08-28T06:18:37.627 回答