私はこれらのタイプの問題をいくつか調べてきましたが、よくわかりません.Ruby on Railsは初めてです。プリンターを管理するアプリケーションをレールで作成しています。基本的に私がここでやろうとしているのは、javascriptで書かれたフロントエンドからレールで書いているバックエンドにajaxを使ってjsonオブジェクトをPOSTすることです。基本的に、ユーザーが何かをチェックアウトして印刷することを決定すると、json オブジェクトがサーバーに送信され、json オブジェクトのデータを使用して新しい rails オブジェクトが作成されます。json オブジェクトからのデータを含む rails オブジェクトを作成したいと考えています。
フロントエンドのJavaScriptにある私のajax。このコードは完全に別のアプリケーションにあることに注意してください。
$.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 です
このコードがごちゃごちゃしていることは承知していますが、どんな助けでも大歓迎です。