Nik*_*iko 0 ruby ruby-on-rails actionview
假设我有变量@var.通常我会用<%= @var %>它写入视图.现在我想从我的视图中调用一个模块方法,该方法在内部决定写入@var或不写入内容.
我无法使用模块内部<%= %>.如何打印@var模块内的内容?该方法将被调用如下:<% my_method %>.谢谢
更新 感谢您的答案到目前为止.也许我应该更清楚地说明我的初始问题.对不起,如果我不够清楚.
起初我使用了<%= %>这样的标签:
def print_if_present(var)
var ? var : ""
end
<%= print_if_present var %>
Run Code Online (Sandbox Code Playgroud)
但是,当它var为零时,我得到了""作为输出,在视图中占据了空间.我该如何防止这种行为?
我假设您的模块实际上是视图助手.如果是这样,只需返回var.
def my_method
if my_condition
@var
else # else clause is optional
@other_var
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,else子句是可选的.如果你想写什么或什么都不想,你可以简单地使用if.这是因为如果if没有被执行而没有别的,它将返回nil,它将被转换为模板中的空字符串.只是为了说明
if true
1
end
=> 1 #return if last value
if false
1
end
=> nil # return nil because there is no else block
Run Code Online (Sandbox Code Playgroud)
由于您仍希望在模板上打印方法的返回值,因此需要保持等号:
<%= my_method %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |