rails 如何摆脱 .erb 文件中的以下内容?

<%= yield :sidebar %>
<%= yield :other_bar %>
<%= yield :footer %>

他们如何能够在相同的上下文中多次产生不同的符号?这是某种 rails 魔法吗?

我完全熟悉:
def some_method(arg1, arg2, &block)
 yield(:block)
end

据我所知,以下不起作用:
def some_incorrect_method(arg1, &block1, &block2)
 yield(:block1)
 yield(:block2)
end

那么他们如何做呢?他们如何让它发挥作用?

最佳答案

他们正在将一个符号传递给yield...

yield :symbol

...不屈服于其他障碍

它的工作原理更像这样:
def some_method(arg1, arg2, &block)
  yield(:some_symbol1)
  yield(:some_symbol2)
end

some_method do |symbol|
  case symbol
  when :some_symbol1
     # do A
  when :some_symbol2
     # do B
  else
     # unrecognised symbol?
  end
end

关于ruby-on-rails - Rails 如何在 erb 模板中屈服于多个块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3303517/

10-15 10:14