我正在尝试构建一个基于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从有效负载中删除空参数的方式在这种情况下会引起问题。应如何处理?
答案 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