render :partial 在 ApplicationController 中定义时返回数组,但在 ApplicationHelper 中定义时返回字符串

发布于 2024-12-06 13:11:27 字数 307 浏览 0 评论 0原文

此方法:

  def admin_buttons
    render :partial => 'portable/admin/admin_buttons'
  end

在ApplicationControler中定义时返回this(不是html_safe)并使用helper_method创建帮助器:

[“mypartial'soutput”]

但在ApplicationHelper中定义时它通常返回预期的字符串。

我不明白。据我所知,这是 Rails 3.1 中的新行为

This method:

  def admin_buttons
    render :partial => 'portable/admin/admin_buttons'
  end

returns this (not html_safe) when defined in ApplicationControler and made a helper with helper_method:

["my partial's output "]

But it returns the expected string normally when defined in ApplicationHelper.

I don't understand. This is new behavior as far as I know in rails 3.1

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

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

发布评论

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

评论(1

相守太难 2024-12-13 13:11:27

简而言之,不要在助手中调用控制器的渲染。它只是不起作用,

控制器中的渲染和助手中的渲染不能互换使用。这在 Rails 3.1 中并不是什么新鲜事。

当您在控制器中调用 render 时,它最终会在视图上调用 render ,其结果存储为其 response_body 。响应主体最终以 Rack 期望的方式返回,作为字符串数组(您所看到的输出)。

这些链接可能会更详细地说明其工作原理:
- 控制器对渲染的定义(金属)
- 它是超类方法,其中 response_body< /code> 已设置 (abstract_controller)

Simply put, don't call the controller's render in helpers. It just does not work that way

render in the controller and render in a helper can't be used interchangeably. This isn't new in Rails 3.1.

When you call render in the controller it eventually does call render on the view, the result of which is stored as its response_body. The response body is eventually returned in the way Rack expects, as a string array (what you see as your output).

These links may shed some more light on how this works:
- The controller's definition of render (metal)
- It's superclass method, where response_body is set (abstract_controller)

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