我的消息模型中有一个用于创建通知的方法,当创建通知时,我还创建了字符串变量内容的内容。 这就是方法的样子。
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>
答案 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 %>