回答編集履歴

2 修正

moke

moke score 2203

2017/03/14 15:41  投稿

DB設計(Model定義)ミスかと思います。
とりあえず
```html
<h2>お知らせ</h2>
<% @notifications.each do |notification| %>
      <%= (content_tag :p ,"#{notification.comment.user.try(:name)}さんが
      あなたの投稿#{<%= (link_to notification.comment.topic.title, topic_path(notification.comment.topic, notification_id: notification.id)})にコメントしました。") if notification.comment.present? %>
      <%= (content_tag :p ,"#{notification.commenttl.user.try(:name)}さんが
       あなたの投稿(#{<%= (link_to notification.commenttl.timeline.content, timeline_path(notification.commenttl.timeline, notification_id: notification.id)})にコメントしました。") if notification.commenttl.present? %>
<% end %>
```
というふうにすれば、とりあえず思い通りの結果が表示されると思います。
あまりスマートではないですが。  
もし必要なら、別質問を立て、各モデルを晒してくださればリファクタリングのお手伝いもできますが。。
1 レイアウトも修正

moke

moke score 2203

2017/03/14 15:33  投稿

DB設計(Model定義)ミスかと思います。
とりあえず
```html
<h2>お知らせ</h2>
<% @notifications.each do |notification| %>
  <p>
      <%= notification.comment.user.try(:name) if notification.comment.present? %>さんが
      あなたの投稿(<%= (link_to "#{notification.comment.topic.title}", topic_path(notification.comment.topic, notification_id: notification.id)) if notification.comment.present? %>)にコメントしました。
  </p>
  <p>
      <%= notification.commenttl.user.try(:name) if notification.commenttl.present? %>さんが
       あなたの投稿(<%= (link_to "#{notification.commenttl.timeline.content}", timeline_path(notification.commenttl.timeline, notification_id: notification.id)) if notification.commenttl.present? %>)にコメントしました。
  </p>
      <%= (content_tag :p ,"#{notification.comment.user.try(:name)}さんが
      あなたの投稿#{<%= (link_to notification.comment.topic.title, topic_path(notification.comment.topic, notification_id: notification.id)})にコメントしました。") if notification.comment.present? %>
      <%= (content_tag :p ,"#{notification.commenttl.user.try(:name)}さんが
       あなたの投稿(#{<%= (link_to notification.commenttl.timeline.content, timeline_path(notification.commenttl.timeline, notification_id: notification.id)})にコメントしました。") if notification.commenttl.present? %>
<% end %>
```
というふうにすれば、レイアウトはともかく、とりあえず思い通りの結果が表示されると思います。
というふうにすれば、とりあえず思い通りの結果が表示されると思います。
もし必要なら、別質問を立て、各モデルを晒してくださればリファクタリングのお手伝いもできますが。。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る