Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 选择更改时如何使用AJAX更新rails页面内容?_Ruby On Rails_Ajax_Json_Jquery_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 选择更改时如何使用AJAX更新rails页面内容?

Ruby on rails 选择更改时如何使用AJAX更新rails页面内容?,ruby-on-rails,ajax,json,jquery,ruby-on-rails-4,Ruby On Rails,Ajax,Json,Jquery,Ruby On Rails 4,我有一个属于某堂课的@course表单,每堂课都有许多可分级的项目。课程id通过下拉菜单选择。当用户更改课程选择时,代表每个可分级_项的嵌套输入必须更新。这可以通过页面刷新和将课程id作为url参数传递来实现……因此,课程可分级的课程项目作为嵌套输入存在,然后可以分级并保存为分级的课程项目。但是,AJAX似乎非常适合这一点 下面的代码不起作用…我想知道我遗漏了什么 课程\u课程\u id-选择课程的选择菜单 /gradable_items_input?lesson={el.val}-指向grad

我有一个属于某堂课的@course表单,每堂课都有许多可分级的项目。课程id通过下拉菜单选择。当用户更改课程选择时,代表每个可分级_项的嵌套输入必须更新。这可以通过页面刷新和将课程id作为url参数传递来实现……因此,课程可分级的课程项目作为嵌套输入存在,然后可以分级并保存为分级的课程项目。但是,AJAX似乎非常适合这一点

下面的代码不起作用…我想知道我遗漏了什么

课程\u课程\u id-选择课程的选择菜单

/gradable_items_input?lesson={el.val}-指向gradable_items_inputs.js.erb模板的url,ajax应该将该模板注入函数调用发起的视图中

gradable_items_container——AJAX应该在这里注入从模板返回的代码

警报按预期触发,类被添加但未删除…因为我从未获得成功

我期望发生的是: 选择菜单更改后,将触发该功能。该函数在lesson_id菜单中获取所选项目的id,然后使用lesson_id作为url参数转到可分级项目输入url。当访问此模板时,它使用可分级的\u项\u输入操作查询课程控制器中的数据库。此查询使用课程id的url参数来过滤记录并填充可分级的课程项目\u inputs.js.erb文件。然后,当成功时…AJAX将来自gradable_items_inputs模板的代码放入id为gradable_items_容器的div中

我的思维过程有缺陷吗?我想答案一定是肯定的……因为它不起作用

  jQuery ->
    el = $("#course_lesson_id")
    el.on "change", ->
    $.ajax "/gradable_items_inputs?lesson=#{el.val()}",
    beforeSend: ->
      $("#ajax_tell").addClass "is-fetching"

    success: (response) ->
      $("#gradable_items_container").html(response)

    complete: (response) ->
      $("#ajax_tell").removeClass "is-fetching"

    error: ->
      $("#{ajax_tell}").html "<p>ERROR</p>"

    timeout: 3000
    alert "test"
尝试添加

dataType:'script'
到Ajax调用params。这将确保请求格式为js


调试Ajax调用的最佳方法是从两侧对其进行监视。查看rails服务器日志以查看如何接收请求,并使用浏览器网络检查器查看响应

您似乎还没有为可分级的\u项目\u输入创建路由

选中routes.rb,必须具有以下代码:

 resources :courses do
    collection do
      get gradable_item_inputs
    end
  end 

我更新了上面的代码。谢谢,joreal…有一个路由问题。谢谢Moran…我按照你的建议添加了数据类型。
dataType:'script'
 resources :courses do
    collection do
      get gradable_item_inputs
    end
  end