我正在尝试构建一个小书签,它向本地主机中的操作发出请求,并显示一个 div,其中包含从本地主机的 js 响应中获取的 html。我可以很好地发出请求,但是当 js 返回时,我在控制台中有“未定义”。我尝试使用 binding.pry 对其进行调试,但发现内容未正确评估。这就是我尝试评估它的方式:
content = "<%= escape_javascript(render(:partial => 'events/bookmarklet').html_safe) %>";
在 binding.pry 控制台中,我得到以下响应:
content = eval("<%= escape_javascript render(:partial => 'events/bookmarklet') %>");
SyntaxError: (eval):1: syntax error, unexpected '<'
<%= escape_javascript render(:partial => 'events/bookmarklet') %>
^
(eval):1: syntax error, unexpected ')', expecting end-of-input
<%= escape_javascript render(:partial => 'events/bookmarklet') %>
^
from (pry):12:in `eval'
最佳答案
如果我正确理解您想做的事情,我不知道您为什么要尝试eval
。
如果你想通过 javascript 传递 html,请使用 json
和 render_to_string
。所以对于你的例子:
# controller
def action_name
content =
render_to_string(
partial: 'events/bookmarklet',
formats: [:html], # always render html format, even if request wants json
layout: false # render only partial, without any layout
)
render json: { html: content }
end
然后就可以通过data.html
访问javascript中的内容了。
关于javascript - 呈现部分内容并转义书签的 html/javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758632/