我已经查看了许多此类问题,但我无法弄清楚。我对 ruby on rails 真的很陌生。我正在在管理打印机的 rails 中创建一个应用程序。基本上我在这里要做的是使用ajax从前端发布一个json对象,前端是用javascript编写的,后端是我用rails编写的。基本上发生的情况是当用户决定结帐和打印某些东西时,json 对象被发送到服务器,并使用 json 对象的数据创建一个新的 rails 对象。我想创建一个包含来自 json 对象的数据的 rails 对象。
我的 ajax,位于前端 javascript。请注意,此代码位于完全独立的应用程序中:
$.ajax({
beforeSend: function(xhr) {
toggleModal();
xhr.setRequestHeader("Authorization", "OAuth "+auth_header);
},
url:message.action,
async:true,
type:message.method,
dataType:'json',
contentType: 'application/json',
data: JSON.stringify(userSession),
error: function(data){
toggleModal();
$.mobile.changePage($("#page_thankyou"),{ transition: "slide"});
},
success: function(data){
toggleModal();
console.log(userSession);
$.mobile.changePage($("#page_thankyou"),{ transition: "slide"});
}
})
Here is the userSession Object:
userSession = {
"kiosk_session":{
"session_id":"",
"is_order":"",
"session_items":[]
}
};
In my Kiosk_session controller:
# POST /kiosk_sessions.json
def create
puts YAML::dump params
@kiosk_session = KioskSession.new(params[:kiosk_session])
respond_to do |format|
if @kiosk_session.save
format.html { redirect_to @kiosk_session, notice: 'Kiosk session was successfully created.' }
format.json { render json: @kiosk_session, status: :created, location: @kiosk_session }
else
format.html { render action: "new" }
format.json { render json: @kiosk_session.errors, status: :unprocessable_entity }
end
end
end
和我的 kiosk_session 模型:
class KioskSession < ActiveRecord::Base
attr_accessible :id, :is_order, :is_reprint, :reprint_reason, :price,
:paid, :printed, :print_date, :session_items_attributes, :kiosk_id
has_many :session_items
has_one :kiosk_kiosk_session
belongs_to :user
belongs_to :kiosk
accepts_nested_attributes_for :session_items
before_save :before_save_callback
def before_save_callback
new_KSS = KioskKioskSession.new(:kiosk_id => self.kiosk_id, :kiosk_session_id => self.id)
new_KSS.save
self.total_price
end
def total_price
#session_items.to_a.sum {|item| session_items.total_price}
#array to hold subtotals
price = 0.00
#finds each item in session
session_items = SessionItem.where(:kiosk_session_id => self.id)
#creates array of subtotals
session_items.each do |t|
#if t.price
t.set_price
price += t.price
end
self.price = price
end
end
哦,我创建信息亭会话的 POST 路线是 /kiosk_session#create
我知道这段代码是一团糟,但任何帮助将不胜感激。