这两种形式的“渲染”有相同的效果吗?
render 'contribute'
render :action => 'contribute'发布于 2009-06-08 21:46:12
简而言之:是的,它们是一样的。但是,有时传递字符串会导致调用render :file或render :template。
Here's the API docs for the render function
如果我们向下滚动并点击“Show Source”,我们可以看到它在幕后做了什么。
注意从第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 :template
string在字符串的中间或结尾包含/ (然后是else情况),然后它将调用render :action
希望这能令人满意地回答您的问题:-)
https://stackoverflow.com/questions/966939
复制相似问题