我发现你可以刷新content_for
查看Rails源代码。 https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/capture_helper.rb
Rails来源:
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]
在我的代码中未评估为true。
我的代码:
content_for(affiliate_link_pos.to_sym, {:flush=>true}) do
render page
end
修改:
我也试过传递第3个参数(内容),但我得到wrong number of argument error (3 for 2)
。
content_for(affiliate_link_pos.to_sym, "true", {:flush=>true}) do
答案 0 :(得分:1)
试试这个:
content_for(affiliate_link_pos.to_sym, null, :flush=>true) do
render page
end
答案 1 :(得分:0)
看起来OP问题中引用的来源实际上来自Rails 4. Even in Rails 3.2.14, content_for does not accept any options.
content_for (name,content = nil,& block)
调用#content_for会在标识符中存储一个标记块供以后使用。您可以通过将标识符作为参数传递给content_for来对其他模板,辅助模块或布局中的存储内容进行后续调用。