[英]rails with ajax param url: nested routes
我試圖找到一個解決方案,但看起來沒有問題。
我有一個嵌套的資源“學生”:
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路由的方法,但收到錯誤“沒有學生的'id = mass_input'”
多謝你們
編輯:按鈕位於一個成績內,因此我必須為此大量學生輸入傳遞當前的URL成績ID
您的代碼失敗,因為您之前的過濾器set_grade
期望使用參數grade_id。 您可以在將ajax請求發送到的URL中將其作為查詢參數傳遞。
或者,如果您的大量創作實際上並不需要成績,則可以跳過此操作的before過濾器:
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}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.