【问题标题】:js.erb not executing javascript but is processed railsjs.erb 不执行 javascript 但已处理 rails
【发布时间】:2015-01-23 10:47:02
【问题描述】:

我正在尝试使用 will_paginate 或 kaminari 使用 Ajax 进行分页。

当我点击分页链接时,我的日志显示

Processing by Instructor::FullDashboardController#pupil_leads as JS

Rendered instructor/full_dashboard/pupil_leads.js.erb within layouts/main (0.1ms)

但是js没有效果。所以为了测试它我写了

console.log("Hello");
<%logger.debug "This is the js file"%>
alert('Hello Rails');

在 js.erb 文件中,在我的日志中,我按预期看到了 This is the js file,但在我的浏览器中的 js 控制台中没有任何内容,并且没有显示警报。所以我知道文件正在处理中,因为我的 logger.debug 工作但没有 js。

如何进一步解决此问题?

Rails 4.1

红宝石 2.1

完整的仪表板控制器

class Instructor::FullDashboardController < ApplicationController
   layout 'main'
...
   def pupil_leads
     @ivar = Model.where("something = ?", some_object.id).order("created_at desc").page(params[:page]).per(10)
     respond_to do |f|
       f.js { render :content_type => 'text/javascript' }
       f.html
     end
  end

【问题讨论】:

  • 请显示完整的Instructor::FullDashboardController
  • 有点长,要不要进行相关操作?
  • 发布pupil_leads 操作。

标签: javascript jquery ruby-on-rails ruby


【解决方案1】:

在渲染块中添加layout: false 选项:

def pupil_leads
   # some code here
  respond_to do |f|
    f.js { render layout: false, content_type: 'text/javascript' }
    f.html
  end
end

由于某种原因 Rails 无法将请求识别为xhr,我还看到必须完整指定视图扩展名(.erb.html.slim)。

【讨论】:

  • 谢谢。您能否简要解释一下为什么需要这样做?仅供参考。
  • 非常感谢,我快疯了。其中一个“希望我早点问并节省十几个小时”。再次感谢。
  • 调试异步操作使用Chrome/Network响应标签,在这里你总是可以看到你的服务器响应有什么问题。
  • 另外请记住,你的 js 中的一个错误和所有错误都可能静默失败——甚至是第一行的初始 console.log 语句。从您的 js 文件中的一个 console.log 语句开始,然后慢慢添加片段,直到 console.log 语句不出现 - 这意味着您粘贴回来的最新代码中某处存在无法追踪的(在 rails 中)错误。
  • 谢谢。你救了我
猜你喜欢
  • 2014-04-28
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
相关资源
最近更新 更多