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
?但这不会自动工作。解决方案的另一部分缺失了。