-2
-#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"

我有一个像上面这样的 haml,我在 Sinatra 应用程序中使用它。当我运行我的应用程序时

haml :problem_haml

每个 ruby​​ 命令都可以完美运行,但 haml 不会渲染任何内容。甚至没有一行,但每个以“-”开头的 ruby​​ 命令都完美无缺?可能是什么原因?请不要回答“因为隐藏类隐藏了所有内容”,这与隐藏 css 无关,实际上甚至没有从服务器返回一个字节。

编辑:

之前说应用是sinatra应用,其实是Padrino应用。虽然 padrino 只是几个在主 sinatra 应用程序中运行的 sinatra 应用程序,而且更多人知道 sinatra,但我说 sinatra 是为了让问题更简单。

这里还有调用haml的代码,

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

它还将 puts 命令写入控制台,没有任何问题。

4

4 回答 4

2

您的代码对我有用,尽管首先我得到了:

WARN: tilt autoloading 'haml' in a non thread-safe way; explicit require 'haml' suggested.

因为我忘了补充:

require "haml" 

在我的代码的开头。会不会是你的问题?

于 2012-09-19T07:52:20.297 回答
1

I have find out that render or haml methods does not do return. So if you are in middle of your function, your should do

return haml :problem_haml

It fixes the problem.

于 2012-11-07T18:32:05.970 回答
-1

您可以检查您的表单是否已提交,使用 chrome 开发人员工具、firebug 或类似的东西(检查 POST),如果是,因为有一个 post 请求您需要处理响应,只是猜测:)

于 2012-09-19T04:03:13.577 回答
-1

在使用 haml/slim/erb 模板时要注意puts,这是因为 haml 有自己的 puts 方法:http ://haml.info/docs/yardoc/Haml/Exec/Generic.html#puts-instance_method

因此,由于您使用的是 padrino,请将每个 puts 替换为:logger.debug

于 2012-09-19T15:07:49.783 回答