可能重复:
检查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 : '' %>但这显然是错误的..任何帮助将不胜感激
Ale*_*yne 26
defined?是红宝石相当于isset().
<% defined?(a) ? a : 'some default' %>
Run Code Online (Sandbox Code Playgroud)
Ant*_*rto 13
如果a未定义则不显示任何内容:
<%= a if defined?(a) %>
Run Code Online (Sandbox Code Playgroud)
a如果没有定义,你可以做的是在partial的开头设置一些默认值.通过这种方式,您可以放心,a不会崩溃,您无需测试是否在任何地方定义.我个人更喜欢这种方式.
注意:如果设置a为false将模板传递给模板,则会""在我的示例中重新分配.
<% a ||= "" %>
#Then do some things with it. No crash!
<%= a %>
<%= a*10 %>
<%= "Here's the variable a value: #{a}" %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17894 次 |
| 最近记录: |