Rails:如何将自定义参数传递给控制器​​方法?

时间:2012-08-27 22:03:44

标签: ruby ruby-on-rails-3

我对Rails相当新。

我想跟踪帖子的阅读频率,以便按照受欢迎程度对其进行排名。因此,我将在read_count表中有一个数据库列posts,每次调用#show时它会递增1。

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

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

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

3 个答案:

答案 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'