2009-06-08 51 views

回答

1

总之:是的,它们是一样的。 但是,有时传递一个字符串将导致致电render :filerender :template

Here's the API docs for the render function

如果我们向下滚动,然后点击“显示源代码”,我们可以看到它的引擎盖下做的。

注意开始行872块:

872:   elsif options.is_a?(String) || options.is_a?(Symbol) 
873:   case options.to_s.index('/') 
874:   when 0 
875:    extra_options[:file] = options 
876:   when nil 
877:    extra_options[:action] = options 
878:   else 
879:    extra_options[:template] = options 
880:   end 

通过查看这些代码,我们可以判断它试图要聪明。

  • 如果字符串以/,(在when 0情况下),然后启动它会调用render :file
  • 如果字符串不包含/可言,(在when nil情况下),那么它会调用render :action
  • 如果字符串包含在字符串(然后else情况)的中间或结束/某处,然后它会调用render :template

希望这可以令人满意地回答你的问题:-)

+0

现在,这是一个答案。谢谢。 – 2009-06-08 22:55:12