新手问题 js.erb 内 js 没有被执行问题

somejump · 2017年03月05日 · 最后由 somejump 回复于 2017年03月05日 · 1153 次阅读

最近学习 ajax,遇到一个很奇怪的问题,因为浏览器明明已经接收到返回的 js 了,但是 js.erb 内的 js 代码都没有被执行:

事情是这样的:原本我的页面在 index 动作下,现在想往 search 动作发一个 post 请求,使 index 页面无需刷新就更新从 search 动作获得的数据

#rooms_controller
  def search
    if params[:key]
        respond_to do |f|
          f.js
        end
    end
  end
#search.js.erb
alert("hello");

服务器端显示无异常:

Started POST "/rooms/search" for 127.0.0.1 at 2017-03-05 09:46:05 +0800
Processing by RoomsController#search as JS
  Parameters: {"key"=>"星期一 J3"}
  Room Load (1.4ms)  SELECT "rooms".* FROM "rooms"
  Rendering rooms/search.js.erb
  Rendered rooms/_results.html.erb (1.7ms)
  Rendered rooms/_details.html.erb (6.4ms)
  Rendered rooms/search.js.erb (12.0ms)
Completed 200 OK in 31ms (Views: 14.1ms | ActiveRecord: 1.4ms)

浏览器返回值:

search POST 200 xhr jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:10255 9.5 KB 44 ms

仔细查看请求的 response 也的确返回了响应的 jsalert("hello"),为什么没有执行呢?同时我也发现写在 assets/javascripts/room.js 内的 jquery 选择器失效,不知道是不是有点关系....

求大神指点

检查 room.js 里面是不是没有把代码包在

$(document).on "turbolinks:load", ->

leiz_me 回复

太神了,你说的没错,看来我对 turbolinks 了解的太少 qaq

somejump 关闭了讨论。 03月05日 16:32
需要 登录 后方可回复, 如果你还没有账号请 注册新账号