条件逻辑不能用haml工作

时间:2012-08-01 19:19:19

标签: ruby if-statement sinatra haml

我有一个HAML模板,如下所示(也使用Sinatra,不确定这是否重要):

- @email = params[:email]
EMAIL: x#{@email}#{params[:email]}#{@email.to_s.empty?}x

-if #{@email.to_s.empty?}
  %form{ :action => "/", :method => "post"}
    %fieldset
      %input{:type => "text", :name => "email", :class => "text"}           
      %input{:type => "submit", :value => "Notify me!", :class => "button"}
-else
  Thank you for your interest!

我有顶部输出用于调试。当我最初加载页面时,我看到“EMAIL:xtruex”和表单,表明参数为空...所有都按计划工作。

现在,当我在表单中填写“testing@gmail.com”并单击按钮时,它会重定向回“/”,我会看到“EMAIL:xtesting @ gmail.comtesting @ gmail.comfalsex”,它告诉我我的条件逻辑应该有用。

但是我仍然看到表单,我的else语句没有被执行...... if语句仍然被触发。

我猜这是一个简单的格式化问题。有人可以帮忙吗?

万一需要,我的Sinatra app文件很简单:

get '/' do
  haml :index
end

post '/' do
  User.create(:email => params["email"])
  haml :index
end

由于

1 个答案:

答案 0 :(得分:3)

此if语句将始终为真

-if #{@email.to_s.empty?}

那是因为你正在用#{}创建一个字符串,只有nil和false会翻转if。

所以你需要写一些像

这样的东西
-if @email.blank?

更新:

这不太对,看看@matt的评论