Я пытаюсь сохранить вход в мою базу данных с помощью Angular and Rails. В тот момент, когда действие выполняется я получаю 400 (Bad Request)
ошибки в лог консоли и ошибка Rails заключается в следующем,Сохранение данных дает ошибку, параметр отсутствует или значение пуст
Started POST "/movies.json" for 127.0.0.1 at 2015-08-24 07:57:09 +0200
Processing by MoviesController#create as JSON
Parameters: {"titles"=>"Star", "movie"=>{}}
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Completed 400 Bad Request in 12ms (ActiveRecord: 0.2ms)
ActionController::ParameterMissing (param is missing or the value is empty: title):
app/controllers/movies_controller.rb:24:in `movie_params'
app/controllers/movies_controller.rb:8:in `create'
routes.rb
resources :movies, only: [:create, :index, :show] do
end
Шаблон search.html.haml используется , здесь пользователь должен ввести заголовок.
#addMovie{"ng-controller" => "addMovieCtrl"}
%div{"ng-click" => "addMovie()"}
%input{:type => "text", "ng-model" => "title"}
addMovie action.
Мой movieController.js, это действие, которое срабатывает, когда пользователь нажимает на DIV в #addMovie
angular.module('addMovieseat', ['ui.router', 'templates'])
.controller('addMovieCtrl', ['$scope', 'movies',
function($scope, movies){
$scope.movies = movies.movies;
$scope.addMovie = function(){
if(!$scope.title || $scope.title === '') { return; }
movies.create({
titles: $scope.title,
});
$scope.title = '';
};
}
])
Угловое обслуживание,
angular.module('addMovieseat')
.factory('movies', ['$http', function($http){
var o = {
movies: []
};
o.create = function(movie){
return $http.post('/movies.json', movie).success(function(data){
o.movies.push(data);
});
};
return o;
}])
И movies_controller. rb
class MoviesController < ApplicationController
def index
respond_with Movie.all
end
def create
respond_with Movie.create(movie_params)
end
private
def movie_params
params.require(:movie).permit(:title)
end
end
Изменения '' titles' к title' действительно исправил '400 ошибки '. Когда я делаю действие save и смотрю файл movie.json, он говорит '[null, null, null, null]', чтобы заголовок еще не был сохранен? Просто введите пустой вход? Где я могу изменить те параметры, которые вы предложили? –
hmm .. открыть 'рельсы консоли' и напечатать' Movie.last'. Если вы видите что-то там, что выглядит правильно, то оно правильно сохраняется. Если вы видите нечто похожее на 'ActiveRecord Association []' или запись фильма с названием 'title: nil', то оно не сохраняется должным образом. Если он правильно сохраняется, возникает проблема с выходом json. – thedanotto
Вы правы, заголовок сохраняется правильно. Таким образом, проблема с выходом JSON. Пойдемте посмотреть. Благодарю. –