渲染是否“贡献”? 与渲染同义:action => “贡献”

发布于 2024-07-23 19:49:03 字数 106 浏览 2 评论 0原文

这两种形式的“渲染”具有相同的效果吗?

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

Do these two forms of 'render' have the same effect?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神经暖 2024-07-30 19:49:03

简而言之:是的,它们是相同的。
但是,有时传递字符串会导致调用 render :filerender :template

这是渲染函数的 API 文档

如果我们向下滚动并单击“显示源代码”我们可以看到它在幕后做了什么。

注意从第 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

希望这能满意地回答您的问题:-)

In short: Yes, they are the same.
However, sometimes passing a string will result in a call to render :file or render :template.

Here's the API docs for the render function

If we scroll down and click 'Show Source' we can see what it's doing under the hood.

Note the block starting at line 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

By looking at this code, we can determine that it is trying to be smart.

  • If the string starts with a /, (the when 0 case) then it will call render :file
  • If the string doesn't contain a / at all, (the when nil case) then it will call render :action
  • If the string contains a / somewhere in the middle or end of the string (then else case), then it will call render :template

Hope this answers your question satisfactorily :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文