Rails API的强参数

时间:2014-12-06 19:30:22

标签: ruby-on-rails ember.js ember-data strong-parameters

我正在尝试构建一个基于Rails的API,供ember应用程序使用。我正致力于项目创建,并且遇到了一些强参数的问题:

class ProjectsController < ApplicationController
  def create
    respond_with current_user.projects.create project_params
  end

private
  def project_params
    params.require(:project).permit(:name)
  end
end

所以在这里,我有一个控制器,它应该接受一个带有项目对象的参数,以及嵌入在项目对象中的其他细节。

当我提交一个提交为{"project" => {}}.的空表单时,这会分崩离析

ActionController::ParameterMissing Exception: param is missing or the value is empty

我认为要求顶级参数被认为是惯用的,但似乎ember从有效负载中删除空参数的方式在这种情况下会引起问题。应如何处理?

2 个答案:

答案 0 :(得分:0)

使用Ember和Rails的最简单方法是在Ember代码中使用Ember Data ActiveModelAdapter / ActiveModelSerializer,在Rails代码中使用active_model_serializers

Ember链接顶部有一些注释描述了a_m_s的预期设置。

答案 1 :(得分:0)

这里的问题是我的ember控制器设置如下:

New = Ember.Controller.extend
  actions:
     createProject: ->
       @store.createRecord 'project',
         name: @get('name')

这似乎很好,但是当表单模板中没有填写名称时,它将是未定义的并且不会被发送。我只需添加:

即可修复它
New = Ember.Controller.extend
  name: null
  # rest the same