Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 用户活动跟踪_Html_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Html 用户活动跟踪

Html 用户活动跟踪,html,ruby-on-rails,ruby,ruby-on-rails-3,Html,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个活动模型 id | activity_model | activity_type | user_id | activity_id | created_at | updated_at| 1 | Article | Created | 1 | 25 | a time | a time | 2 | Headline Story | Created | 1 | 26 | a tim

我有一个活动模型

id | activity_model | activity_type | user_id | activity_id | created_at | updated_at|
1  | Article        | Created       | 1       |   25        | a time     |  a time   |
2  | Headline Story | Created       | 1       |   26        | a time     |  a time   |
**活动模型是一个字符串

现在让我们假设我的控制器有(实际上更干净,因为第二部分在模型中):

我希望我的观点是这样的:

      - @user_activity.each do |activity|
        - if activity_model == "Article"
          = link_to Article.find(activity.activity_id).name, activity
        elsif activity_model == "Headline Story"
          = link_to HeadlineStory.find(activity.activity_id).name, activity
        = activity.activity_type
        = "#{time_ago_in_words(activity.created_at)} ago"
我主要关注上面代码块的if语句部分


我的问题是。当我迭代这些不同的模型类型时,我如何使我的链接保持干净?我在视图中使用find,这是不对的。

如果您想迭代
活动
对象,同时查找
文章
对象,您可以通过以下两种方式执行此操作:

  • 在控制器中填充哈希表并在视图中使用它
  • 创建在控制器中填充的视图模型,并使用它渲染视图
  • 创建可在视图中使用的辅助函数
第一个和最后一个选项是最快实现的

      - @user_activity.each do |activity|
        - if activity_model == "Article"
          = link_to Article.find(activity.activity_id).name, activity
        elsif activity_model == "Headline Story"
          = link_to HeadlineStory.find(activity.activity_id).name, activity
        = activity.activity_type
        = "#{time_ago_in_words(activity.created_at)} ago"