我有我的模特:
class Course < ActiveRecord::Base
include ActiveUUID::UUID
validates :location, :description, presence: true
end
和DB模型:
class CreateCourses < ActiveRecord::Migration
def change
create_table :courses, :id => false do |t|
t.uuid :id, :primary_key => true, :null => false
t.datetime :date_start, :null => false
t.float :price, :null => false
t.datetime :date_end
t.text :description
t.text :location, :null => false
t.uuid :mentor_uuid
t.timestamps
end
end
end
和我在控制器中的方法,我通过ajax:
def create
@course = Course.new(params.require(:course).permit(:description, :location))
if @course.save
render json: @course, status: 200
else
render json: @course.errors.full_messages, status: 400
end
end
这是我的ajax电话:
var course = {"description" : "Timo", 'location' : 'hahahah'};
$scope.test = function(){
$http.post('api/courses.json', course).success( function (data) {
}).success(function(data){
console.log(data);
}).error(function(data){
console.log(data);
});
};
所以这给我带来了一个错误:["Date end can't be blank", "Date start can't be blank", "Price can't be blank"]
,但如果我想将错误消息更改为我的特定错误,该怎么办?此外,出错时它只返回错误,我做轨道也会返回&#34; old&#34; faild的模型,所以用户不必再次面对墙壁,并从头开始再次输入所有文本?
答案 0 :(得分:1)
属性名称
根据this answer&amp; this one,您遇到的核心问题是您的attribute
名称正在添加错误消息。解决此问题的方法是如何从错误消息中删除attribute
名称:
#config/locales/en.yml en: errors: format: "%{message}"
默认为
%{attribute} %{message}
-
我们之前已经这样做了,虽然我认为这不适用于Rails 4:
<%= @model.errors.full_messages.each do |attribute, message| %>
<%= message %>
<% end %>