我有一个活动模型
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 |
**activity_model是一个字符串
现在让我们假设我的控制器有(实际上是更干净的第二部分是在模型中):@user_activity = Activity.where(user_id: 1).all
我希望我的视图是这样的:
- @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语句部分。
我的问题是。当我迭代这些不同的模型类型时我如何让我的link_to保持干净?我在视图中使用了find,这是不对的。
如果你想在迭代Activity
对象的同时找到Article
对象,你可以用两种方法来做到这一点:
- 在控制器中填充哈希表,并在视图中使用。
- 创建一个视图模型,您可以在控制器中填充它并使用它来渲染您的视图。
- 创建一个可以在视图中使用的辅助函数
第一个和最后一个选项是最快实现的