gpt4 book ai didi

ruby-on-rails - 在 Rails 4.1 中更改了 Controller 操作特定的布局

转载 作者:行者123 更新时间:2023-12-04 20:02:08 24 4
gpt4 key购买 nike

我刚刚升级到 Rails 4.1。

我以前在 Controller 操作中有以下内容,效果很好。

respond_to do |format|
format.html { render html: @user, layout: "fullscreen" }
end

这在 Rails 4.1 中不起作用,页面只是呈现对象 #<User:0x007fb087429a70>

按如下方式编辑 Controller 可修复此错误。

respond_to do |format|
format.html
end

在 Rails 4.1 中设置布局的正确方法是什么。我在文档中找不到它。

最佳答案

htmlrender 中添加了选项Rails 版本中的方法 4.1 .查看列出的问题 here

当你尝试过

def action_name
## ...
respond_to do |format|
format.html { render html: @user, layout: "fullscreen" }
end
end

Railsv4.1 之前的版本,真正发生的是render忽略了 html选项,拿起 layout然后继续寻找名为 action_name.html.*** 的 View (其中 *** 指代模板处理程序,如 erbhaml 等)。它找到了 View 并渲染了它。如果该 View 不存在,那么您将收到 Missing template error

当您在 Rails 4.1 中使用相同的代码时, 作为 html render 中允许选项肯定会处理的方法。现在,首先您需要了解 html 是什么选项实际上是:

You can send a HTML string back to the browser by using the :html option to render:

 render html: "<strong>Not Found</strong>".html_safe

当您不想为操作编写 html 文件并且只想简单地呈现 HTML 字符串时,您可以使用它。

这就是调用此特定操作的原因,您现在看到一个包含对象 #<User:0x007fb087429a70> 的 html 页面因为您将值传递给了 html选项为 @user .

Edit the controller as follows fixes this error.

respond_to do |format|
format.html
end

首先,这不是错误。你误解了什么html选项确实如此。我很确定您确实有一个与您的操作相对应的 View ,这是您期望呈现的 View 。上面的代码为你做了。

我想您只是想指定 layout供您查看。您需要做的就是:

respond_to do |format|
format.html { render layout: "fullscreen" }
end

关于ruby-on-rails - 在 Rails 4.1 中更改了 Controller 操作特定的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com