Rails在视图中写入变量而不使用<%=%>

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为零时,我得到了""作为输出,在视图中占据了空间.我该如何防止这种行为?

fot*_*nus 6

我假设您的模块实际上是视图助手.如果是这样,只需返回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)