【问题标题】:No inline blocks in ERB helpers?ERB 助手中没有内联块?
【发布时间】:2012-08-22 13:34:50
【问题描述】:

我很好奇:在 ERB 文件中,当将块传递给视图助手时,为什么 this 起作用:

<%= div_for @thing do |x| %>
  <%= x %>
<% end %>

这不是

<%= div_for @thing {|x| x.to_s} %>

在 Ruby 中,do...end{...} 完全相同,那么在 ERB 中为什么不呢?请注意:我可以在上面的第二行单独使用x,因为它的.to_s 方法返回我要渲染的字段。抱歉,如果之前有人问过这个问题,我找不到类似的问题(虽然找到了similar answer)。

【问题讨论】:

    标签: ruby-on-rails-3 syntax erb view-helpers


    【解决方案1】:

    我怀疑第二个代码块是完全一样的:

    <%= div_for @thing do |x| %>
      <% x %>
    <% end %>
    

    因为 x 上没有“=”,所以它不会在您的视图中输出。 试试看:

    <%= div_for @thing {|x| concat x.to_s} %>
    

    【讨论】:

    • 不,这也不起作用。错误是“undefined method arity for nil:NilClass”,由ActionView::Helpers::RecordTagHelper 的第101 行引起(参见is.gd/nFRmQc)。不知何故,{|inline| block} 似乎在 ERB 中返回 nil...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多