我目前在用户模型中保存了如下代码。
User.where(type: "supercool").each do |user|
if user.score == 100
user.message = "Hello #{user.name}, you now have #{user.points} points!".html_safe
elsif user.address == "New York"
user.message = "You live in the same town as #{Person.where(address:"New York").first.name}"
user.save
end
我将这些消息保存在我的模型中,并通过在控制器中调用User.find(params [:id])。消息在视图中打印出来。
实际的型号代码要长得多,因为根据不同的场景有许多独特的消息。
虽然这有效,但我现在想要在消息中提到的对象中添加link_to
。
对于第一条消息,我想保存它,以便当我将它发送到视图时,它的形式为
Hello <%= link_to user.name, user_path(user.id) %>, you now have <%= link_to user.points, leaderboard_path %> points!
我尝试了以下内容,但它不起作用。
User.where(type: "supercool").each do |user|
if user.score == 100
user.message = "Hello #{link_to user.name, user}, you now have #{link_to user.points, leaderboard_path} points!".html_safe
user.save
end
如何在字符串中保存erb?
答案 0 :(得分:1)
这不是一个很好的做法。
你可以这样:
class Model < ActiveRecord::Base
include Rails.application.routes.url_helpers
def example
ActionController::Base.helpers.link_to user.name, user
end
end
但是使用帮助器或erb模板向用户显示这似乎是最好的方法。
答案 1 :(得分:1)
这个怎么样?使用html标签而不是使用link_to
User.where(type: "supercool").each do |user|
if user.score == 100
user.message = "Hello <a href=#{Rails.application.routes.url_helpers.user_path(user)}>#{user.name}</a>, you now have <a href=#{Rails.application.routes.url_helpers.leaderboard_path}>#{user.points}</a> points!".html_safe
user.save
end
end
在你看来,只做
<%= user.message %>