HAML运行内联Ruby,但不渲染任何内容
我有一个类似上面的haml,我正在Sinatra应用程序中使用它。当我运行我的应用程序时HAML运行内联Ruby,但不渲染任何内容,ruby,sinatra,haml,padrino,Ruby,Sinatra,Haml,Padrino,我有一个类似上面的haml,我正在Sinatra应用程序中使用它。当我运行我的应用程序时 -#encoding: utf-8 :css .hidden{display:none;} %script{:src=>"/javascripts/jquery.js"} %form{:action=>"https://get724.ccvb.com.tr/Get724/get724uye.aspx",:method=>"post"} %input.hidden{:type=>"
-#encoding: utf-8
:css
.hidden{display:none;}
%script{:src=>"/javascripts/jquery.js"}
%form{:action=>"https://get724.ccvb.com.tr/Get724/get724uye.aspx",:method=>"post"}
%input.hidden{:type=>"text",:name=>"uyeno",:value=>""}
%input.hidden{:type=>"text",:name=>"kkno",:value=>""}
%input.hidden{:type=>"text",:name=>"gectar",:value=>""}
%input.hidden{:type=>"text",:name=>"tutar",:value=>""}
%input.hidden{:type=>"text",:name=>"dcins",:value=>""}
%input.hidden{:type=>"text",:name=>"sipbil",:value=>""}
%input.hidden{:type=>"text",:name=>"sesbil",:value=>""}
%input.hidden{:type=>"text",:name=>"burl",:value=>""}
%input.hidden{:type=>"text",:name=>"hurl",:value=>""}
- t = Time.now.strftime("%Y%m%d%H%M%S")
- puts t
%input.hidden{:type=>"text",:name=>"zaman",:value=>"#{t}"}
-puts "adfasdf : " + @asdf.to_s
-puts "asdf"
-puts "asdf : " + @asdf.to_s
-puts session[:ewer]
-puts session[:zxcv]
-puts strtodigest
-digest = Digest::SHA1.base64digest(strtodigest)
-puts digest
-#%input{:type=>"text",:value=>"#{strtodigest}"}
-#%input{:type=>"text",:value=>"#{digest}"}
%input.hidden{:type=>"text",:name=>"ozet",:value=>"#{digest}"}
:javascript
$('form').submit();
-puts "End Of Haml"
每一个ruby命令都可以完美地工作,但是haml不会呈现任何东西。甚至连一行都没有,但是每个ruby命令都以“-”开头,这样做绝对完美吗?原因可能是什么?
请不要回答“因为隐藏类隐藏了一切”,它不是关于css隐藏的,从字面上说,甚至连服务器返回的一个字节都没有
编辑:
我之前说过该应用程序是sinatra应用程序,但实际上是Padrino应用程序。虽然padrino只是在主要sinatra应用程序中运行的几个sinatra应用程序,而且更多的人知道sinatra,但我说sinatra是为了让问题更简单
下面是调用haml的代码
haml :problem_haml
它还可以毫无问题地将puts命令写入控制台。您可以使用chrome开发工具、firebug或类似工具(检查POST)检查表单是否已提交,如果已提交,因为有POST请求您需要处理响应,只需猜测一下:)您的代码适合我,尽管首先我得到:
def get3DSecure(ccname,price,skul,ccno,cvc)
puts "#############################################"
puts "get3DSecure function called"
puts "#############################################"
@ccname = ccname
@price = price.to_s + "00"
@skul = skul
@ccno = ccno
@cvc = cvc
session[:name] = ccname
session[:xmltosend] = makeXmlFor3D
session[:sipbil] = UUIDTools::UUID.random_create.to_s.delete!("-")
session[:sesbil] = UUIDTools::UUID.random_create.to_s.delete!("-")
session[:skul] = skul
session[:price] = price
session[:ccno] = ccno
session[:cvc] = cvc
puts "#############################################"
puts "get3DSecure function near end, render starts"
puts "#############################################"
render :adsecure,:layout=>:main
end
因为我忘了加上:
WARN: tilt autoloading 'haml' in a non thread-safe way; explicit require 'haml' suggested.
在我的代码的开头。这可能是你的问题吗 在haml/slim/erb模板中使用puts时请注意,因为haml有自己的puts方法:
因此,由于您使用的是padrino,请将每个put替换为:
logger.debug
我发现render或haml方法不会返回。因此,如果您正在执行您的功能,您应该这样做
require "haml"
它解决了这个问题。Haml将在此处生成的HTML不会显示在浏览器中。你说“甚至连一个字节都没有从服务器返回”——你确定吗?如果是这样的话,那么这可能不是Haml的问题。如果在浏览器中查看源代码,是否可以看到HTML。请注意,使用
put
将写入stdout(可能是终端),而不是HTML页面。是的,我确信,不会返回任何内容,只是一个空页面(源代码)。
return haml :problem_haml