渲染'贡献'是render的同义词:action => '有助于'

时间:2009-06-08 20:49:32

标签: ruby-on-rails rendering

这两种形式的'渲染'是否具有相同的效果?

render 'contribute'
render :action => 'contribute'

1 个答案:

答案 0 :(得分: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

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