gpt4 book ai didi

javascript - rails : how to return valid javascript from controller?

转载 作者:行者123 更新时间:2023-12-02 17:50:53 24 4
gpt4 key购买 nike

A 在 Controller 中有以下操作:

def new_messages
@new_msgs = Message.find(:all, order: 'id desc', limit: 12)
respond_to do |format|
format.js
end
end

和在 new_messages 操作后返回到客户端的 javascript erb 文件 'new_messages.js.erb':

var data = '';
<% @new_msgs.each do |m| %>
data += '<tr><td><%= m.user.name %></td><td><%= m.text %></td><td><%= m.created_at %></td></tr>';
<% end %>

$('#messages-table').html('');
$('#messages-table').append(data);

在这里,我只是为新消息编写行,并尝试将结果附加到我的表'#messages-table'。但存在问题:浏览器从服务器获取无效的 javascript(根据 Chrome 开发者工具中的网络 -> 请求 -> 响应选项卡):

var data = '';
data += '<tr><td>dime</td><td>cowboys from hell
</td><td>2014-01-24 15:11:36 UTC</td></tr>';

$('#messages-table').html('');
$('#messages-table').append(data);

第 2 行中的换行符导致 SyntaxError: Unexpected token ILLEGAL。是否可以返回我的 new_messages.js.erb 文件中的 javascript?如何避免这种危险行为?

最佳答案

js.erb 文件的主要优点是在其中使用 html 模板。你应该做如下的事情。

_your_partial.html.erb

<% @new_messages.each do |m| %>
<tr><td><%= m.user.name %></td><td><%= m.text %></td><td><%= m.created_at %></td></tr>
<% end %>

js.erb

$('#messages-table').html('');
$('#messages-table').append(<%=j render "your_partial" %>);

关于javascript - rails : how to return valid javascript from controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364379/

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