0

我已经查看了许多此类问题,但我无法弄清楚。我对 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

我知道这段代码是一团糟,但任何帮助将不胜感激。

4

0 回答 0