在ruby / rails中使用名称和参数命名yield的语法是什么?

时间:2013-10-27 13:16:41

标签: ruby-on-rails ruby yield

可以在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()的一些内容可能与这个问题有关。

1 个答案:

答案 0 :(得分:1)

content_for(:name)首先进行评估,并存储一段HTML以供以后使用。 yield(:name)仅获取此内容。因此,您不能将参数传递给已调用的方法,也不会再次调用。

您可能只需要剪切部分HTML.erb文件,然后从目标位置渲染它。 Render将命名参数作为哈希值。