gpt4 book ai didi

javascript - 使用 Rails Controller 轻松替换 AJAX HTML 元素?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:35 26 4
gpt4 key购买 nike

我希望能够有这样的 ERB 部分:

<ul id='things-index'>
<% @things.each do |t| %>
<li><%= t.name %></li>
<% end %>
</ul>

并且能够像这样在 Controller 中更新它:

class ThingsController < ApplicationController
def create
@thing = Thing.new(params[:thing])
@thing.save

respond_to do |format|
format.html
format.js do
@things = Thing.all
page.replace('things-index')
end
end
end
end

这意味着 JavaScript 将作为响应发送,而无需我显式编写如下 create.js.erb 的 js.erb 模板:

$('#things-index').replaceWith('<%= escape_javascript(render("things/index")) %>')

可能已经有类似的东西,要么内置在 Rails 中,要么作为 gem 提供,但如果有,我不知道。

我想理想情况下,它会通过 JS 重新呈现“索引”操作并将更新发送到浏览器,因此它可能看起来更像这样:

respond_to do |format|
format.html
format.js do
render 'index'
end
end

并且知道要替换 #things-index(或者允许我明确指定它)。

更新

糟糕...当 Prototype 成为 Rails 的一部分时,显然有 page.replace_html,但该功能已被 .js.erb 模板方法取代。这对我来说似乎不那么枯燥(大量几乎相同的 js.erb 模板),所以如果有人有解决方案,我将不胜感激。

最佳答案

您可以将任何您想要的内容传递给您的 js.erb,包括要替换的内容以及替换的内容。

$('<%= @id %>').replaceWith('<%= escape_javascript(render(@renderable)) %>')

注意 即使在 2012 年,这也不是真正推荐的做此类事情的方法。这些天(2015 年初)我认为考虑到可用的优秀客户端技术,它更不值得推荐。

关于javascript - 使用 Rails Controller 轻松替换 AJAX HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217500/

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