gpt4 book ai didi

ajax - 使用 Proc 返回默认布局行为

转载 作者:行者123 更新时间:2023-12-02 03:55:36 27 4
gpt4 key购买 nike

我正在向我的网站添加不显眼的 ajax,因此我需要根据请求类型设置布局:

# app/controllers/application_controller.rb
layout Proc.new { |controller| controller.request.xhr? ? 'ajax' : 'application' }

# app/views/layout/ajax.html.erb
<%= render :partial => "shared/flash", :object => flash %>
<%= yield %>

但我也想使用嵌套布局并让我的 javascript 处理在何处插入 ajax 检索到的内容。根据rails api layout nil 通过继承强制默认布局行为,所以我尝试了这个:

layout Proc.new { |controller| controller.request.xhr? ? 'ajax' : nil }

这不起作用,我根本没有布局。我找到的唯一一条信息是一条旧的聊天记录,上面说这确实由于 Rails 处理布局的方式而不起作用。

有办法实现吗?

由于返回 nil 的 proc 不起作用,他们是在满足条件的情况下设置布局的方法(request.xhr?此处)。类似 layout_if 的东西。

或者我应该添加

layout Proc.new { |controller| controller.request.xhr? ? 'ajax' : 'controller_name' }

每个 Controller 都有不同的布局?

我的 ajax 请求实际上返回 html,我是否应该作弊并返回 .xml 文件中的那些 html 元素并使用 respond_to 设置布局?(这可能很好,出于另一个原因,有不同的 url 来访问有和没有布局内容可以允许页面缓存,但还有其他方法可以实现这一点。)

或者也许有更好的解决方案。

最佳答案

Rails 可以自动执行此操作。例如,您创建了 2 个布局(application.html.erbapplication.js.erb)。什么时候请求是xhr?它将使用 js(application.js.erb) 布局,如果标准请求到达服务器 rails 将呈现 application.html.erb

关于ajax - 使用 Proc 返回默认布局行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846350/

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