gpt4 book ai didi

javascript - 您如何使用三个级别的引用来表示代码?

转载 作者:行者123 更新时间:2023-11-30 07:02:41 25 4
gpt4 key购买 nike

基本上我的 Controller 操作中有一个 respond_to block :

respond_to do |format|
format.js { render :js => "$('#test').html('<div class='colorize'>Test</div>');" }
end

我还尝试将 css 类 colorize 添加到将通过 js 呈现的 div block ,但使用引号会破坏代码。我如何使它与添加的类一起工作?

最佳答案

在这里避免让你自己头疼,除了最简单的 JS 之外,不要在你的 ruby​​ 处理程序中放置任何东西。

format.js { render :js => "colorizeTest()" }

然后在页面上或通过包含的脚本,声明一个函数:

var colorizeTest = function() {
$('#test').html('<div class="colorize">Test</div>');
};

不要将 JS 放入你的 Ruby 中。


或者您可以使用真实 View 模板:

# controller code
@some_id = 'test'

# JS format Handler
format.js

# views/whatever.ejs.js
$('#<%= @some_id %>').html('<div class="colorize">Test</div>');

或者两者兼而有之!在这个例子中,这么多的抽象是愚蠢的,但是一旦这个 JS 开始做任何事情,即使是稍微复杂一点,这将是最好的方法。通过生成的 js 响应传递更多数据,更少代码。真正复杂的 js 逻辑应该始终静态包含在页面上。

# controller code
@some_id = 'test'

# JS format Handler
format.js

// js funciton on page
var colorizeTest = function(id) {
$('#' + id).html('<div class="colorize">Test</div>');
};

# views/whatever.ejs.js
colorizeTest(<%= @some_id %>);

最后,我可能还会争辩说,真正的“最佳”方法是只从服务器呈现 JSON,并且您已经静态包含 JS 来处理通过 AJAX 获取它,并根据该数据处理对页面的操作。这样你就永远不会“生成”可执行的 javascript 服务器端,这非常干净。

// js file somewhere
var colorizeTest = function(id) {
$('#' + id).html('<div class="colorize">Test</div>');
};

var doStuff = function() {
$.getJSON("/whatever.json", function(data) {
colorizeTest(data.id);
});
};

# rails controller
render :json => { :id => 'test' }

看看现在你的 ruby​​ 中根本没有任何 JS?或者你的 JS 中有任何 ruby 吗?只是在服务器和客户端之间发送数据。人真好。正是我喜欢的样子。

关于javascript - 您如何使用三个级别的引用来表示代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733561/

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