Ember 数据无法通过 createRecord 正确地将参数传递给 Rails
Ember Data unable to pass params to Rails properly via createRecord
我正在尝试设置一个 Ember 数据调用来创建一个注册对象,它只包含一封电子邮件,仅此而已。我的 Ember 数据设置有些奇怪,因为参数似乎已传递但 Rails 无法接收它们。不知道怎么回事。
Ember 前端:
var signup = this.get('store').createRecord('signup', {
email: this.get('emailAddress')
});
console.log(this.get('emailAddress')); --> prints fine
console.log(signup); --> data is empty, somewhat alarming/confusing
console.log(signup.get('email')); --> however, this also prints fine
signup.save();
请求负载:
{"data":{"attributes":{"email":"gg@gg.com"},"type":"signups"}}
Rails 后端:
def create
@signup = Signup.new({ email: params[:email] })
p params
# prints <ActionController::Parameters {"controller"=>"signups", "action"=>"create"} permitted: false>
p @signup --> prints Signup object with nil for email
@signup.save!
render json: @signup
end
响应负载:
{"data":{"id":"3","type":"signup","attributes":{"email":null}}}
我需要将此行添加到 config/initializers/mime_types.rb
。
Mime::Type.register "application/vnd.api+json", :json
这是因为我使用 JSON API 规范从 Ember 传递数据,所以我需要 Rails 正确处理它。
我正在尝试设置一个 Ember 数据调用来创建一个注册对象,它只包含一封电子邮件,仅此而已。我的 Ember 数据设置有些奇怪,因为参数似乎已传递但 Rails 无法接收它们。不知道怎么回事。
Ember 前端:
var signup = this.get('store').createRecord('signup', {
email: this.get('emailAddress')
});
console.log(this.get('emailAddress')); --> prints fine
console.log(signup); --> data is empty, somewhat alarming/confusing
console.log(signup.get('email')); --> however, this also prints fine
signup.save();
请求负载:
{"data":{"attributes":{"email":"gg@gg.com"},"type":"signups"}}
Rails 后端:
def create
@signup = Signup.new({ email: params[:email] })
p params
# prints <ActionController::Parameters {"controller"=>"signups", "action"=>"create"} permitted: false>
p @signup --> prints Signup object with nil for email
@signup.save!
render json: @signup
end
响应负载:
{"data":{"id":"3","type":"signup","attributes":{"email":null}}}
我需要将此行添加到 config/initializers/mime_types.rb
。
Mime::Type.register "application/vnd.api+json", :json
这是因为我使用 JSON API 规范从 Ember 传递数据,所以我需要 Rails 正确处理它。