0
灰燼CLI 0.2.5 +使用燼-CLI-軌寶石的Rails 4.2,active_model_serializer(0.9.3)灰燼屬於關聯關係的傳遞零到服務器上保存
目前我正在試圖給用戶傳遞到createRecord它在傳遞給rails時不會保存或綁定user_id。參數回來爲:
{"course"=>{"subject"=>"CSE", "number"=>110, "credit_hours"=>3, "grading_scale"=>"Regular", "user_id"=>nil}}
灰燼控制器(查找用戶返回正確的值)
import Ember from 'ember';
export default Ember.Controller.extend({
scales: ['Regular', 'Plus/Minus', 'Plus', 'Minus'],
weights: [],
actions: {
createCourse: function() {
var self = this;
var course = this.get('model');
this.store.find('user', this.get('session.content.secure.id')).then(function(user) {
course.set('user', user);
})
course.save().then(function(course){
$.growl.notice({title: 'Course', message: 'Sucessfully created course.'})
})
}
}
});
Rails的控制器
class CoursesController < ApplicationController
def index
@courses = User.find(params[:user_id]).courses
render json: @courses
end
def show
@course = Course.find(params[:id])
render json: @course
end
def update
@course = Course.find(params[:id])
if @course.update_attributes(params[:course])
render json: @course
else
render json: @course.errors, status: 500
end
end
def create
@course = Course.new(course_params)
if @course.save
render json: @course, status: :created
else
render json: @course.errors, status: 500
end
end
private
def course_params
params.require(:course).permit(:subject, :number, :credit_hours, :grading_scale, :user_id)
end
end
串行器(我這裏有一個堆棧層太深錯誤,以便我使用了我以前看過的user_id,我甚至降級到0.8.3來修復這個錯誤,但仍然沒有運氣)
class CourseSerializer < ActiveModel::Serializer
embed :ids, include: false
attributes :id, :subject, :number, :credit_hours, :grading_scale, :user_id
#has_one :user
has_many :weights
has_many :grades
end
路線(漂亮的直線前進這裏)
import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function() {
var store = this.store;
return store.createRecord('course');
},
setupController: function(controller, model) {
controller.set('model', model);
},
actions: {
willTransition: function() {
var course = this.controller.get('model');
course.rollback();
}
}
});
課程的片段模式
export default DS.Model.extend({
user: DS.belongsTo('user'),
weights: DS.hasMany('weight',{ async: true }),
grades: DS.hasMany('grade',{ async: true }),
subject: DS.attr('string'),
number: DS.attr('number'),
creditHours: DS.attr('number'),
gradingScale: DS.attr('string')
摘錄用戶模型
export default DS.Model.extend({
courses: DS.hasMany('course'),
grades: DS.hasMany('grade'),
email: DS.attr('string'),
name: DS.attr('string'),
gradePoints: DS.attr('number'),
gradeUnits: DS.attr('number'),
password: DS.attr('string'),
password_confirmation: DS.attr('string')
讓我知道如果我需要提供什麼其他。這讓我一陣沮喪。