传入content_for方法的选项参数

时间:2012-10-26 17:12:49

标签: ruby-on-rails ruby-on-rails-3

我发现你可以刷新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

2 个答案:

答案 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来对其他模板,辅助模块或布局中的存储内容进行后续调用。