gpt4 book ai didi

ruby-on-rails - Rails 渲染不同格式的 Action

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

假设我有一个 application#search 方法,我想响应 AJAX 请求。在我的 JS View (app/views/application/search.js.erb) 中,我想呈现 HTML View :

$("#content").html( escape_javascript( render( :action => 'search', :format => 'html' ) ) );
$("#title").html( "Title" );

我知道我可以将内容移动到部分中并在 HTML 和 JS View 中呈现它,但问题是我有许多不同的操作需要以这种方式响应,我不希望创建一堆 1 - 只呈现部分内容的行 View 文件。

有什么方法可以显式呈现具有特定格式的操作并同时获取 content_for 的不同部分吗?因此,对于上面的示例,我可以将 #title 设置为使用 content_for :title 或其他内容返回的 HTML。

最佳答案

我不确定将一堆 HTML 输出到 JS 源代码是一个很棒的设计,但这不是你的问题——我不得不做类似的事情来将模板呈现的 HTML 片段输出到 XML,这我认为更合理:)。

无论如何,您的问题中有几件事。

它随着 Rails 的版本而变化,但在 Rails 4.x 中,我认为这应该可以工作,你已经很接近了,但由于某种原因它需要 :formats (复数)与数组。在您的示例中还有一些其他不相关的事情不正确,例如需要 ERB <%= 标签,以及将 javascript 字符串放入引号中。

var str = "<%= escape_javascript( render( :partial => 'partial_name', :formats => ['html'] ) ) %>";

我觉得。我自己还没有尝试过。

请注意,这仍然是部分内容。您想从另一个模板中呈现一个完整(而非部分)模板——我很确定 Rails 不会让您这样做。之前我也有点烦。但实际上,即使要从 JS 部分渲染 HTML 部分(“something.html.erb”),您也需要使用 :formats => [] 技巧,否则 Rails 会坚持“嘿,我想找到一个具有该名称的 js 部分,我们处于 js 模式,伙计!”。

但是如上所述应该从 JS 模板渲染 _partial_name.html.erb。这可能仍然不是一个伟大的设计。

希望这对您有所帮助。

关于ruby-on-rails - Rails 渲染不同格式的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540586/

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