2009-06-08 52 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