使用proc在Rails中渲染布局会引发ArgumentError

时间:2012-12-13 01:24:39

标签: ruby-on-rails ruby

这是我不明白的事情。为什么第一个例子不起作用(ArgumentError)而第二个?

class FooController < ActionController::Base
  layout proc { request[:action] == 'index' ? 'foo' : false }
end

class FooController < ActionController::Base
  layout proc { |controller| request[:action] == 'index' ? 'foo' : false }
end

我正在创建proc而不是lambda。我一直认为只有lambdas需要正确的论据。

获取在某处转换为lambda的块?

1 个答案:

答案 0 :(得分:0)

proc也可以在layout方法中使用args,它需要request个对象, 另一方面,您可以阅读When to use lambda, when to use Proc.new?,了解proclambda之间的区别。