这可能有一个更好的标题,但我不知道技术术语是什么
无论如何,我正在执行一个将链接附加到 div 的 ajax 调用。该链接包含 erb 代码,例如
#{post.comments.count}
$('#comments_<%= @post.id %>').append("<%= escape_javascript (link_to 'view all #{post.comments.count} comments', post_comments_path(@post), remote: true, class: 'more-comments', id: 'more_comments_#{post.id}', data: {post_id: @post.id, type: 'html', value: '#{post.comments.count}' }) %>"); }`
链接最终看起来像这样:
<br/><br>
view all #{post.comments.count} comments
<br>
<br>
这是检查链接时的样子:
<a class="more-comments" id="more_comments_#{post.id}" data-post-id="4" data-type="html" data-value="#{post.comments.count}" data-remote="true" href="/posts/4/comments">view all #{post.comments.count} comments</a>
当我尝试<%= %>
在代码中使用时,我最终得到 500 个错误。使用其他 AJAX 链接时,<%= %>
我不会被抛出这些 500 错误。
例如:
这有效:
$('#more_comments_<%= @post.id %>').html("view all <%= @post.comments.count %> comments");
这不会:
$('#comments_<%= @post.id %>').append("<%= escape_javascript (link_to 'view all <%= @post.comments.count %> comments', post_comments_path(@post), remote: true, class: 'more-comments', id: 'more_comments_<%= @post.id %>', data: {post_id: @post.id, type: 'html', value: <%= @post.comments.count %> }) %>");
这会引发此错误:
POST http://localhost:3000/posts/4/comments 500 (Internal Server Error)
我尝试通过将链接与 JS 持有的变量“拼接”在一起来规避这一点:
$('#comments_' + Append.id).append("<%= link_to 'view all " + Append.comment_count + " comments', post_comments_path(" + Append.id + "), remote: true, class: 'more-comments', id: 'more_comments_" + Append.id + "', data: {post_id: " + Append.id + ", type: 'html', value: " + Append.comment_count + " } %>");
而且我仍然收到 500 错误。
评论控制器看起来像这样,
def index
@post = Post.find(params[:post_id])
@comments = @post.comments.all.order("created_at ASC")
respond_to do |format|
format.html { render layout: !request.xhr? }
format.js
end
end
end
我在 stackoverflow 上找不到这个确切的问题,我可能只是没有用谷歌搜索(TIL 谷歌搜索是一个词)正确的关键词。对于那些做到这一点的人来说,很多电子爱