我在haml玩ruby evaluation。如果我向haml模板传递一个变量,它就不起作用了。只有当ruby代码已经在模板中时才有效(不是作为变量传递),我分享我的源代码以更好地解释
require 'sinatra'
require 'haml'
get '/' do
@user_input = params[:foo_user_input]
puts @user_input
haml :foo
end
__END__
@@ foo
%p= "hello"
<br>
%p= 7*7
<br>
%p= #{@user_input}
<br>
%p This is #{7*7} cake!
<br>
%p This is #{@user_input} cake!
<br>
%p= @user_input
<br>
如果我将7*7
传递给GET请求,正如你所看到的,我得到的是7*7
,而不是49
。只有当我已经把7*7
放在haml模板本身时,它才被评估。
hello
49
This is 49 cake!
This is 7*7 cake!
7*7
1条答案
按热度按时间inkz8wg91#
当你想计算存储在字符串变量中的Ruby代码时,你可以像这样使用
eval
:警告:但不要将来自不可信源的字符串传递给
eval
。攻击者可以向您的方法传递代码,将我们的密码上传到他们的服务器或删除您的硬盘。