我正在遵循本指南:http://ember.vicramon.com/chapters/all
到目前为止一切顺利!但是,我试图根据我的Rails模型的验证定义获得Ember验证。到目前为止,这里也很好。
我的代码采用与指示相同的方法:http://emberjs.com/api/data/classes/DS.Errors.html或不?
这是我到目前为止所做的:
应用/控制器/ API / V1 / products_controller.rb
respond_to :json
def create
product = Product.new product_params
if product.save
respond_with :api, :v1, product
else
render json: { errors: product.errors }, status: 422
end
# respond_with :api, :v1, Lead.create(lead_params)
end
应用/资产/ Javascript角/控制器/ products_new.js.coffee
App.ProductsNewController = Ember.Controller.extend
actions:
createProduct: ->
product = @store.createRecord 'product', @get('fields')
product.save().then =>
@transitionToRoute 'product', product
# app/serializers/product_serializer.rb
class ProductSerializer < ActiveModel::Serializer
attributes :id, :name, :description, :amount_in_cents, :status, :errors
end
应用/资产/ Javascript角/模板/产品/ new.js.emblem
article#product
h1 New Product
ul
each errors.messages in error
li = error
/* {{#each errors.messages}} */
/* <div> */
/* <p class="label label-danger">{{this}}</p> */
/* </div> */
/* {{/each}} */
form
fieldset
dl
dt: label Name:
dd: view Ember.TextField value=fields.name
dl
dt: label Description:
dd: view Ember.TextField value=fields.description
dl
dt: label Amount in cents:
dd: view Ember.TextField value=fields.amount_in_cents
dl
dt: label Status:
dd: view Ember.TextField value=fields.status
fieldset.actions
input type='submit' value='Create Product' click="createProduct"
我使用空字段提交表单,Firebug控制台返回:422 Unprocessable Entity
这是正常的,但错误没有在模板上显示......有什么想法吗?
答案 0 :(得分:0)
一位开发人员Alex Speller帮忙解决了这个问题并建议我这样做:
product.save().then =>
@transitionToRoute 'product', product
, =>
@set 'errors', product.get('errors')
app / assets / javascripts / controllers / products_new.js.coffee
似乎工作!