为什么这个js没有出现在我的rails视图中?

时间:2012-11-10 04:27:16

标签: javascript ruby-on-rails ruby ruby-on-rails-3

好的,我有一个我需要为网站获取的广告系列JavaScript。该网站在ssl下,而广告系列并非如此,浏览器会阻止请求

因此,我正在通过application_controller

执行请求
before_filter :get_campaign 

def get_campaign
  uri = URI.parse("http://us1.campaign-archive1.com/generate-js/?u=2f77d2f8c77398c0b064223ba&fid=1&show=3")
  begin
    @campaign = Net::HTTP.get_response(uri).body
  end
end

在视图中我做

      %script{:language => "javascript", :type => "text/javascript"}
        = @campaign.try(:html_safe)

因为@campaign是一个document.write字符串...但由于某种原因它不写...我错过了什么或有更好的方法来实现这个

更新

在Chrome中查看控制台后,我看到此错误Uncaught SyntaxError: Unexpected token <

这是我生成的代码

  <script language='javascript' type='text/javascript'>
                  document.write("<div class=\"display_archive\"><div class=\"campaign\">08\/29\/2012 - <a href=\"http:\/\/us1.campaign-archive1.com\/?u=2f77d2f8c77398c0b064223ba&id=4c4d33ed6f\" title=\"Ten Fun Facts and Figures from Gen Con Indy 2012\" target=\"_blank\">Ten Fun Facts and Figures from Gen Con Indy 2012<\/a><\/div><\/div>");
                  <br>
                  <div class='display_archive'></div>
                  <div class='campaign'>
                    Select
                    <a href='http://eepurl.com/jkmGT' target='_blank'>HERE</a>
                    to sign up for our newsletter! 
                  </div>
                </script>

2 个答案:

答案 0 :(得分:1)

您下载的Javascript片段包含无法使用未转义的字符,并且您正在阻止转义的发生。通常一个人将这种东西包装在CDATA标签中。如果打开CDATA支持,haml javascript过滤器会为您执行此操作(默认情况下为XHTML):

:javascript
  #{@campaign}

答案 1 :(得分:0)

为什么在脚本标记内包含HTML?我很确定问题是什么,你应该从@campaign中删除 br 中的所有内容。

@campaign.gsub!(/<br.*/, "")