【问题标题】:Rendering a partial and escaping the html/javascript for a bookmarklet为小书签渲染部分内容并转义 html/javascript
【发布时间】:2015-11-17 13:50:28
【问题描述】:

我正在尝试构建一个小书签,它向 localhost 中的操作发出请求,并显示一个 div,其中的 html 来自 localhost 的 js 响应。我可以很好地提出请求,但是当 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'

【问题讨论】:

    标签: javascript jquery html ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    我不知道你为什么要尝试eval 一些东西,如果我理解你想要做的正确的话。

    如果您想通过 javascript 传递 html,请使用 jsonrender_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 中的内容。

    【讨论】:

    • 我试图评估它是否有效。非常感谢:D。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多