【问题标题】:Rails Ajax: .js.erb rendered as text, not executedRails Ajax:.js.erb 呈现为文本,未执行
【发布时间】:2011-08-04 08:18:58
【问题描述】:

我正在使用带有javascript_include_tag :defaults 的 jquery-rails gem。因此页面有标题:

<script src="/javascripts/jquery.js?1312437063" type="text/javascript"></script> 
<script src="/javascripts/jquery_ujs.js?1312437070" type="text/javascript"></script> 
<script src="/javascripts/application.js?1311268601" type="text/javascript"></script> 
<meta name="csrf-param" content="authenticity_token"/> 
<meta name="csrf-token" content="KdgrBxF726xfPP3qbNOHd/0TG9c7lVCoZDXPnadFOzI="/> 

Ajax 请求来自视图的行:

<%= link_to 'Run', :controller => "config_panel", :action => "full_run", :remote => true, :format => :js %>

渲染为:

<a href="/config_panel/full_run.js?remote=true">Run</a>

控制器中定义的响应:

def full_run
  respond_to do |format|
    format.js { render :text => "alert();"}
    format.xml
  end
end

点击链接时,服务器会记录:

Started GET "/config_panel/full_run.js?remote=true"
Processing by ConfigPanelController#full_run as JS
Parameters: {"remote"=>"true"}
Rendered text template (0.0ms)
Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)

而浏览器显示纯文本:

alert();

HTML 标头有status: 200content-type: text/javascript。 Chrome JavaScript 控制台没有显示任何错误。

我尝试了以下解决方法:

  • 包含 rails.js --- 失败
  • link_to 更改为&lt;div onclick="$.ajax(...)"&gt; --- 工作

我对@9​​87654332@ 在link_to 中的真实行为感到非常困惑。

【问题讨论】:

    标签: jquery ruby-on-rails ajax link-to


    【解决方案1】:

    试试这个:

    <%= link_to 'Run', { :controller => "config_panel", :action => "full_run" }, :remote => true %>
    

    如果您使用路由助手,则无需将其作为哈希传递

    link_to reference

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2016-12-27
      • 2015-04-19
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多