gpt4 book ai didi

javascript - rails 使用 javascript 渲染 View onclick

转载 作者:行者123 更新时间:2023-11-30 16:29:57 25 4
gpt4 key购买 nike

我正在尝试创建一个 View ,用户可以在其中单击不同的按钮并根据他们单击的按钮呈现不同的内容。我已经尝试用 JS 完成这项工作,但无法真正让它发挥作用。我在我的 View 中制作了一个按钮:

<div class="link">
<%= link_to "Greetings", "#" %>
</div>
<div id="show"></div>

然后在 job.js.erb 中:

$(function() {
$('.link').click(function() {
$('#show').append("<%=escape_javascript render(:partial => 'show' %>");
});
});

不幸的是, Assets 不支持渲染,但我真的不知道实现这一目标的最佳方法是什么。

最佳答案

您可以尝试的一种方法是让按钮单击通过 AJAX 转到 Controller 操作,然后呈现名称为 <action_name>.js.erb 的文件。 .然后这个文件将能够调用 render行动。

我将详细说明以下内容:

假设有问题的资源是Greetings你有一个dynamic_show Greetings 中的操作 Controller ,例如,你有一个 dynamic_show_greetings_path路由到此操作。

在您的 View 中,您可以:

<div class="link">
<%= link_to "Greetings", dynamic_show_greetings_path, remote: true %>
</div>
<div id="show"></div>

Greetings#dynamic_show操作如下:

def dynamic_show
respond_to do |format|
format.js
end
end

然后,在您的 View 目录中,您有一个 dynamic_show.js.erb文件,其中将包含用于附加动态 View 的脚本,如下所示:

$('#show').html("<%=escape_javascript render(:partial => 'show') %>");

这就为您解决了!

当然,现在要使其动态化,您必须将参数传递给 Controller ​​,然后根据获得的响应呈现内容。

附言:

  • 设置remote: true在链接上确保调用将是 AJAX打电话。
  • 默认情况下, Controller 操作呈现与操作名称同名的文件,因此,dynamic_show回应js将呈现 dynamic_show.js.erb

希望这对您有所帮助...;)

关于javascript - rails 使用 javascript 渲染 View onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468292/

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