Без всего вашего кода я не уверен, в чем именно проблема. Я думаю, что наиболее вероятно, что вам нужно избавиться от contentType: false
и processData: false
.
contentType: false
означает, что вы не отправляете тип контента, и без этого Rails не знает, как анализировать параметры в теле POST. Вы, вероятно, хотите здесь использовать значение по умолчанию application/x-www-form-urlencoded
, которое вы получите, если уберете эту опцию.
processData: false
говорит jQuery не превращать ваш объект params в правильный формат для тела POST, и вы хотите, чтобы jQuery делал это, потому что вы хотите отправлять свои данные в формате application/x-www-form-urlencoded
, который Rails будет анализировать и превращать в параметры.
Далее вам, вероятно, следует отправить токен CSRF с вашим запросом. Вы можете сделать это, добавив эти строки в ваш Coffeescript перед вызовом $.ajax
:
token = $('meta[name="csrf-token"]').attr('content')
$.ajaxSetup
beforeSend: (xhr) ->
xhr.setRequestHeader('X-CSRF-Token', token)
$.ajax
type: 'POST'
url: '/users/login'
data: params
cache: false
success: (response) =>
console.log(response)
Вы можете поместить этот вызов $.ajaxSetup
в более централизованное место, потому что вы, вероятно, захотите его для каждого вызова AJAX вместо просто doLogin
.
Если ни одна из этих проблем не является проблемой, вам следует отредактировать ваше сообщение, включив в него журнал консоли из процесса rails, а также журнал консоли из браузера.