rails with ajax param url: 嵌套路由
rails with ajax param url: nested routes
我试图找到解决方案,但没有任何问题与我的相似。
我有一个嵌套资源 "students" :
resources :grades do
resources :students
end
添加:控制器代码
students_controller.rb
before_action :set_grade
def set_grade
@grade = Grade.find(params[:grade_id])
end
def mass_input
#use this to create the inserts (to_do)
datos = JSON.parse(params[:form_data])
end
我正在为使用 Handsontable 的学生提供大量输入。我的问题是我不知道如何在咖啡代码中传递等级 ID(或者如果我需要传递它)。
我尝试使用这条新路线(如果我不创建 GET 路线,即使在 ajax 部分选择 POST 也会抛出错误。
get 'students/mass_input', to: 'students#mass_input'
post 'students/mass_input', to: 'students#mass_input', as: 'mass_input'
咖啡按钮代码
$('#stu_mass_input').on 'click', (e) ->
form_data = {
mass_students: mass_students.getData(),
}
$.ajax
method: 'POST',
data: { form_data: JSON.stringify(form_data)},
url: '/students/mass_input'
我收到错误消息找不到 'id'= 的成绩(意料之中,我没有在 URL 中给出成绩 ID)
我尝试了几种嵌套此 mass_input 路由的方法,但出现错误 "No student with 'id = mass_input' "
谢谢大家
编辑:按钮在一个年级内,所以我必须为这个大量学生输入传递当前的 url 年级 ID
您的代码失败,因为您的前置过滤器 set_grade
需要一个参数 grade_id。您可以将此作为 url 中的查询参数传递给您 ajax 请求。
或者,如果您的批量创作实际上不需要成绩,您可以跳过此操作的前置过滤器:
before_action :set_grade, except: [:mass_input]
假设您在父页面中有 grade_id,您可以使用生成的脚本标记将其传递给 javascript:
进行中:
@grade_id = params[:id]
在您的 erb 模板中:
<script>
REGISTRY = { grade_id: "<%= @grade_id %>" }
</script>
在咖啡中,应包含在上面的脚本标签之后:
$('#stu_mass_input').on 'click', (e) ->
form_data = {
mass_students: mass_students.getData(),
}
$.ajax
method: 'POST',
data: { form_data: JSON.stringify(form_data)},
url: "/students/mass_input?grade_id=#{REGISTRY.grade_id}"
我试图找到解决方案,但没有任何问题与我的相似。
我有一个嵌套资源 "students" :
resources :grades do
resources :students
end
添加:控制器代码
students_controller.rb
before_action :set_grade
def set_grade
@grade = Grade.find(params[:grade_id])
end
def mass_input
#use this to create the inserts (to_do)
datos = JSON.parse(params[:form_data])
end
我正在为使用 Handsontable 的学生提供大量输入。我的问题是我不知道如何在咖啡代码中传递等级 ID(或者如果我需要传递它)。
我尝试使用这条新路线(如果我不创建 GET 路线,即使在 ajax 部分选择 POST 也会抛出错误。
get 'students/mass_input', to: 'students#mass_input'
post 'students/mass_input', to: 'students#mass_input', as: 'mass_input'
咖啡按钮代码
$('#stu_mass_input').on 'click', (e) ->
form_data = {
mass_students: mass_students.getData(),
}
$.ajax
method: 'POST',
data: { form_data: JSON.stringify(form_data)},
url: '/students/mass_input'
我收到错误消息找不到 'id'= 的成绩(意料之中,我没有在 URL 中给出成绩 ID)
我尝试了几种嵌套此 mass_input 路由的方法,但出现错误 "No student with 'id = mass_input' "
谢谢大家
编辑:按钮在一个年级内,所以我必须为这个大量学生输入传递当前的 url 年级 ID
您的代码失败,因为您的前置过滤器 set_grade
需要一个参数 grade_id。您可以将此作为 url 中的查询参数传递给您 ajax 请求。
或者,如果您的批量创作实际上不需要成绩,您可以跳过此操作的前置过滤器:
before_action :set_grade, except: [:mass_input]
假设您在父页面中有 grade_id,您可以使用生成的脚本标记将其传递给 javascript:
进行中:
@grade_id = params[:id]
在您的 erb 模板中:
<script>
REGISTRY = { grade_id: "<%= @grade_id %>" }
</script>
在咖啡中,应包含在上面的脚本标签之后:
$('#stu_mass_input').on 'click', (e) ->
form_data = {
mass_students: mass_students.getData(),
}
$.ajax
method: 'POST',
data: { form_data: JSON.stringify(form_data)},
url: "/students/mass_input?grade_id=#{REGISTRY.grade_id}"