正如标题所示我试图检查是否在SASS中定义了一个变量.(如果有任何不同的差异,我正在使用指南针)
我找到了Ruby等价物,它是:
defined? fooRun Code Online (Sandbox Code Playgroud)
在黑暗中给了一枪,但它只是给了我错误:
defined": expected "{", was "?
我找到了一个解决方法(显然只是在所有情况下定义变量,在这种情况下它实际上更有意义)但我真的想知道这是否可能在未来
可能重复:
检查Ruby中是否定义了变量
使用Tilt的模板render方法,我传入
#... t setup ...
t.render(self, { :a => 'test', :b => 'again' })
Run Code Online (Sandbox Code Playgroud)
在我的 template.erb
<%= a %>
<%= b %>
Run Code Online (Sandbox Code Playgroud)
说我:b从传递给模板的哈希中删除.渲染将失败,因为:b未定义.
在PHP中,我可以去:
<?= isset($foo) ? $foo : '' ?>
Run Code Online (Sandbox Code Playgroud)
是否有任何干净的方式(在ruby/erb中)"echo if"?
我试过,<%= b.nil? ? b : '' %>但这显然是错误的..任何帮助将不胜感激
在使用多阶段扩展的Capistrano中,我有两个环境:prod和testing.
我需要在prod.rb中不需要的tests.rb中的一些变量,我希望我的一些任务能够检查变量是否已定义并在其中使用它,但如果未设置则忽略它.
所以,在testing.rb中我会有类似的东西:
set :foo, 'bar'
Run Code Online (Sandbox Code Playgroud)
prod.rb不会引用:foo,因为它不需要它.在我的一项任务中,我想做的事情如下:
if defined?(foo)
# do something with foo
else
# do something without foo
end
Run Code Online (Sandbox Code Playgroud)
但我一直收到错误:
undefined local variable or method 'foo'
Run Code Online (Sandbox Code Playgroud)
有没有办法在任务中测试未定义的全局变量?或者我必须做以下事情:
set :foo, ''
Run Code Online (Sandbox Code Playgroud)
在我的所有环境中,不需要:foo变量?
我想要做 puts blob
但如果blob变量不存在,我得到
NameError: undefined local variable or method `blob' for main:Object
Run Code Online (Sandbox Code Playgroud)
我试过了
blob?
blob.is_a?('String')
puts "g" if blob
puts "g" catch NameError
puts "g" catch 'NameError'
Run Code Online (Sandbox Code Playgroud)
但没有工作.
我可以通过使用@instance变量来绕过它,但这就像我应该知道的那样作弊并且相应地处理没有价值的问题.