Я попытался найти решение, но никаких проблем не было похоже на мое.
У меня есть вложенный ресурс "ученики":
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. Моя проблема в том, что я не знаю, как передать идентификатор класса (или, если нужно, передать его) в кофейном коде.
Я пробовал с этими новыми маршрутами (если я не создаю GET-маршрут, вы выбрасываете ошибку, даже выбрав POST в части ajax.
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' = (ожидаемый, im не указывая идентификатор класса в URL-адресе)
Я пробовал несколько способов вложенных маршрутов mass_input, но я получаю сообщение об ошибке "Нет ученика с" id = mass_input ""
Спасибо, парни
edit: кнопка INSIDE класса, поэтому я должен передать текущий идентификатор уровня URL для этого входа для массовых студентов
Ваш код не работает, потому что перед фильтром set_grade
ожидает параметр grade_id. Вы можете передать это как параметр запроса в URL-адресе, на который вы отправляете запрос ajax.
В качестве альтернативы, если ваше массовое создание фактически не требует наличия класса, вы можете пропустить фильтр перед этим действием:
before_action :set_grade, except: [:mass_input]
Предполагая, что у вас есть class_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}"