gpt4 book ai didi

ruby-on-rails - 使用 ApplicationController.renderer.render 从 Controller 外部渲染的 Rails 5 不会在自身上设置变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:25 25 4
gpt4 key购买 nike

我正在使用 Rails 5 ApplicationController.renderer.render 方法从模型中进行渲染。我需要将一些变量传递给我的布局,这是我使用 locals 选项完成的;如果直接访问此变量,则该变量在布局中可用,但不能通过 self 访问。

这是我设置渲染的方式

html_string = ApplicationController.renderer.render(
file: "/#{template_path}/base/show",
:formats => [:pdf,:html],
locals: {
:@routing_form => self,
:controller_name => controller_name,
:action_name => action_name,
:current_user => current_user
},
:layout => '/layouts/application'
)

然后在布局中我想做这样的事情。

<div id="foo" class="<%= self.action_name %>">

我能够通过在这个特定实例中删除 self 来实现它

<div id="foo" class="<%= action_name %>">

但现在我关心的是如何设置一个变量,以便它可以与 self 一起正常工作?以前我使用的是 render_anywhere gem,这是使用 rendering_controller.var = "value"

处理的

最佳答案

self是 Ruby 中的关键字,您不能将其用作布局模板中的方法调用,因此您应该使用其他名称与本地人一起传递。

您可以传递类似于 my_object: self 的内容它会工作正常。

如果你想用@命名键,你应该把它放在一个字符串中'@my_object': self并在您的模板中正常调用它:<%= @my_object.action_name%>

关于ruby-on-rails - 使用 ApplicationController.renderer.render 从 Controller 外部渲染的 Rails 5 不会在自身上设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37846606/

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