1

可以在 rails 中使用yieldin:name视图:

= yield :some_place

所以然后使用 then usingcontent_for :some_place do ...仅在yield :some_place放置的位置插入代码块(http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method)。

ruby 还允许在 yiled ( http://www.tutorialspoint.com/ruby/ruby_blocks.htm ) 中传递参数:

def test
   yield 5
   puts "You are in the method test"
   yield 100
end
test {|i| puts "You are in the block #{i}"}

但是我没有发现任何关于在 rails 视图中同时使用名称和参数的 yield/content_for :

= yield :some_place, 5, 6

...

= content_for :some_place do |a,b|  
  h3 = "Yield provided parameters: #{a} and #{b}"

可能吗?yield 语句和传递块的官方 rails 或 ruby​​ 语法在哪里?我听说了一些关于 Proc.new() 的事情,这可能与问题有关。

4

1 回答 1

1

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

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

于 2013-10-27T14:55:56.963 回答