如何在rails中的部分模板中有可选的局部变量?

Jan*_*nak 14 ruby ruby-on-rails

我觉得在我偏爱的顶端,我会有这样的东西

<% optional_width = default_value unless (defined? optional_width) 
Run Code Online (Sandbox Code Playgroud)

但是我对此有不一致的结果,我认为这不是一个很好的方法.在rails中执行此操作的"正确"方法是什么?

mač*_*ček 23

阅读ActionView :: Base文档中的将局部变量传递给子模板部分

基本上它说你应该使用这种模式:

<% if local_assigns.has_key? :headline %>
  Headline: <%= headline %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

对你而言,这可能会转化为:

<div style="width: <%= local_assigns.has_key?(:optional_width) ? optional_width : 500 %>px;">
  <!-- filler -->
</div>
Run Code Online (Sandbox Code Playgroud)

重要!

根据文件

使用测试defined? headline不起作用.这是一个实施限制.