可以在rails中使用yield
和:name
视图:
= yield :some_place
然后使用content_for :some_place do ...
仅在yield :some_place
放置def test
yield 5
puts "You are in the method test"
yield 100
end
test {|i| puts "You are in the block #{i}"}
的位置插入代码块。
同样ruby允许在jiled(http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method)中传递参数:
= yield :some_place, 5, 6
...
= content_for :some_place do |a,b|
h3 = "Yield provided parameters: #{a} and #{b}"
但我没有找到任何关于在rails视图中使用 yield / content_for两者的名称和参数的信息:
{{1}}
有可能吗? yield语句和传递块的官方rails或ruby语法在哪里? 我听说过有关Proc.new()的一些内容可能与这个问题有关。
答案 0 :(得分:1)
content_for(:name)首先进行评估,并存储一段HTML以供以后使用。 yield(:name)仅获取此内容。因此,您不能将参数传递给已调用的方法,也不会再次调用。
您可能只需要剪切部分HTML.erb文件,然后从目标位置渲染它。 Render将命名参数作为哈希值。