根据条件渲染,rails

时间:2010-10-21 13:52:07

标签: ruby-on-rails ruby

我有一个显示嵌套关系的表单。渲染嵌套子对象的调用如下所示:

<% if @fpimgblocks %>
  <% f.fields_for @fpimgblocks do |builder| %>
    <%= render 'fpimgblock_fields', :f => builder %>
  <% end %>
<% end %>

@fpimgblocks是一个查找的结果,我已经验证了零结果,所以我希望这不会呈现。但是,即使未初始化对象,也会呈现局部。然后,当我提交表单时,这会返回一个nil_class错误。

if语句中的语法是错误还是什么?我已经尝试过更改为“除非@ fpimgblocks.nil?但没有变化。

1 个答案:

答案 0 :(得分:6)

@fpimgblocks并不像你期望的那样是零。因为它是查找的结果,所以它实际上是一个空数组。改变这个:

<% if @fpimgblocks %>

到此:

<% unless @fpimgblocks.empty? %>

它会起作用。我希望这有帮助!