我有一个如下所示的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”和表单,表示参数为空一切按计划进行。
现在,当我在表单中填写“[email protected]”并单击按钮时,它会重定向回“/”,我会看到“email:[email protected]@gmail.comflasex”,它告诉我,我的条件逻辑应该可以工作。
但我还是看到了表单,我的else语句没有被执行if语句仍在被触发。
我猜这是一个简单的格式问题。有人能帮忙吗?
为了以防万一,我的sinatra应用程序文件很简单:
get '/' do
  haml :index
end

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

谢谢

最佳答案

如果这句话永远是真的

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

这是因为您正在创建一个#{}的字符串,只有nil和false会翻转if。
所以你需要写些
-if @email.blank?

更新:
这不太对,看看@matt的评论

关于ruby - 条件逻辑无法正常运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11766035/

10-13 04:51