Я новичок в Rails и пытаюсь сохранить переменную javascript из представления в Rails Controller, который затем сохраняется в Model (базе данных). Пользователь отвечает на викторину / опрос, а затем перенаправляется на страницу результатов. Страница результатов имеет JavaScript, который вычисляет оценки / результаты, и я хочу, чтобы оценки были сохранены в базе данных.
Я оглянулся и заметил, что лучшим решением является использование AJAX с внешнего интерфейса и получение данных в контроллере (бэкэнд).
У меня есть один контроллер под названием quiz, в котором есть все мои методы, и модель для хранения результатов, которая называется Score. Результат пользователя должен быть сохранен после того, как страница результатов будет выполнена / посещена.
Вот что я сделал:
в quiz_controller.rb
def result
@title = "Quiz Results"
end
def score
@mark = Score.all
end
def mark
quiz_name = params[:quiz]
mark = params[:mark]
@mark = Score.new(score_params)
@mark.save
end
private
def score_params
params.require(:score).permit(:quiz, :score)
end
в result.html.erb
<script>
var mark = calcMark();
$.ajax({
url: "http://localhost:3000/mark?quiz=" + quiz + "&mark=" + mark,
type: "POST",
success: function (data) {
console.log(data);
}
});
</script>
в 2019 году ****** _ create_scores.rb
t.string "quiz", :limit => 50, :null => false
t.column "score", :decimal, :limit => 30, :null => false
t.datetime "created_at"
t.datetime "updated_at"
в моих маршрутах.rb
get 'result' => 'quizs#result'
post 'result/mark' => 'quizs#mark'
Пожалуйста, скажите мне, если я делаю что-то не так. Я до сих пор не знаю, правильный ли мой маршрут и каким должен быть URL ajax. Заранее спасибо.