Ruby on rails 在RubyonRails中显示变量内容,而不是变量名称

Ruby on rails 在RubyonRails中显示变量内容,而不是变量名称,ruby-on-rails,ruby,string-interpolation,Ruby On Rails,Ruby,String Interpolation,我想自定义一条消息,用户可以从后端修改欢迎消息。比如: messages = Model.first puts messages.welcomeMessage 欢迎来到#{userInfo[“name”]},我们的最新成员 其中,userInfo[“name”]是一个GET变量 我将此消息存储在名为welcomeMsj的模型列中 然后,我尝试使用模型显示消息。比如: messages = Model.first puts messages.welcomeMessage 我的输出如下: W

我想自定义一条消息,用户可以从后端修改欢迎消息。比如:

messages = Model.first

puts messages.welcomeMessage
欢迎来到#{userInfo[“name”]},我们的最新成员

其中,
userInfo[“name”]
是一个GET变量

我将此消息存储在名为
welcomeMsj
的模型列中

然后,我尝试使用模型显示消息。比如:

messages = Model.first

puts messages.welcomeMessage
我的输出如下:

Welcome to #{userInfo["name"]}, out latest member
但我想展示:

欢迎来到Emmanuel,我们的最新会员

这个的正确语法是什么

提前感谢。

仅为此类用例创建。您可以让后端用户在双大括号中包含一个特殊字符串,例如
{{{name}}
,然后在渲染时填充该字符串。例如,后端用户将欢迎消息设置为“
welcome to{{{name}},我们的最新成员。
”,该消息将存储在您的数据库中。假设
current\u user
变量表示当前登录的用户,则可以使用以下代码呈现自定义消息:

template = Liquid::Template.parse(messages.welcomeMessage) 
template.render('name' => current_user.name)              
另一个更危险的策略是使用
eval
,它将字符串解释为代码:

puts eval("\"" + messages.welcomeMessage + "\"")
不建议这样做,因为它可能允许恶意用户运行任意代码。通过使用Liquid,您可以控制用来代替
{{name}

的确切值。请尝试以下方法:

Welcome to <%= userInfo["name"] %>, our latest member
欢迎加入,我们的最新会员

您是否在您的视图中使用
erb
?但这不会自动工作。解决方案的另一部分缺失了。