尝试在模型中为字符串变量rails 5创建链接

时间:2017-12-18 21:55:53

标签: ruby-on-rails

我的消息模型中有一个用于创建通知的方法,当创建通知时,我还创建了字符串变量内容的内容。 这就是方法的样子。

 def create_notification

  if self.conversation.sender_id == self.user_id
    sender = User.find(self.conversation.sender_id)
    Notification.create(content: "New message from #{sender.fullname}", user_id: self.conversation.recipient_id)
  else
    sender = User.find(self.conversation.recipient_id)
    Notification.create(content: "New message from #{sender.fullname}", user_id: self.conversation.sender_id)
  end
end

我想将内容“来自#{sender.fullname}的新邮件”全部链接到converstations_path。 我尝试了以下内容。

        Notification.create(content: "<a href="/converstions">New message from #{sender.fullname}</a>", user_id: self.conversation.recipient_id)

        Notification.create(content: "<%= link_to 'New message from #{sender.fullname}', conversations_path %>", user_id: self.conversation.recipient_id)

结果是它将呈现引号内的所有内容,忽略html或link_to帮助器。我怎样才能将其作为链接?

我在_notification.html.erb中呈现notification.content这就是文件的样子

<strong><%= notification.content %></strong>
<span class="pull-right"><%= notification.created_at.to_formatted_s(:short) %></span>

2 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是在通知模型中添加字段,例如src。此src将是您要将用户发送到的链接。然后,每当您向用户呈现此通知时,您都可以使用notification.src中的link_to

这将是我推荐的方法,但我相信您也可以使用notification.content.html_safe之类的东西来解析+渲染HTML而不是仅仅渲染它。

答案 1 :(得分:-1)

我尝试通过引用this page

解决此问题
(Model)sender = User.find(self.conversation.sender_id)

link = "<a href ='URL'>New message from #{sender.fullname}</a>"

Notification.create(content: "#{link}", user_id: self.conversation.recipient_id)

(View)<%= notification.content.html_safe %>