3

我发现您可以content_for查看 Rails 源代码。https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/capture_helper.rb

导轨来源:

def content_for(name, content = nil, options = {}, &block)
  if content || block_given?
    if block_given?
      options = content if content
      content = capture(&block)
    end
    if content
      options[:flush] ? @view_flow.set(name, content) : @view_flow.append(name, content)
    end
    nil
  else
    @view_flow.get(name)
  end
end

我正在尝试设置options[:flush] = true,但遇到了一些麻烦。在我下面options[:flush]的代码中没有评估为真。

我的代码

content_for(affiliate_link_pos.to_sym, {:flush=>true}) do
  render page
end

编辑:我也尝试过传递第三个参数(内容),但我得到了wrong number of argument error (3 for 2).

content_for(affiliate_link_pos.to_sym, "true",  {:flush=>true}) do
4

2 回答 2

1

尝试这个:

content_for(affiliate_link_pos.to_sym, null, :flush=>true) do
  render page
end
于 2013-12-28T02:25:04.267 回答
0

看起来 OP 问题中引用的来源实际上来自 Rails 4。 即使在 Rails 3.2.14 中,content_for 也不接受任何选项。

content_for (name, content = nil, &block)

调用 #content_for 将标记块存储在标识符中以供以后使用。您可以通过将标识符作为参数传递给 content_for 来对其他模板、帮助模块或布局中的存储内容进行后续调用。

于 2013-10-09T01:11:48.890 回答