2016-01-26 26 views
1

我已經包含了以下在我的寶石寶石文件 寶石「spree_multi_currency」,github上:「大禮包/ spree_multi_currency」,分支已出現: 新元,美元,歐元,澳元,英鎊,菲律賓比索,泰銖,馬來西亞林吉特 ,這些都正確地轉換價格。但我的要求是添加AED貨幣,所以我補充說,從後端也SGD,USD,EUR,AUD,GBP,PHP,THB,MYR,AED enter image description here狂歡貨幣轉換器無法正常工作的AED

現在,我點擊AED它給我以下錯誤

Started GET "/assets/world-globe.png" for 127.0.0.1 at 2016-01-26 10:26:08 +0100 


Started POST "/currency/set" for 127.0.0.1 at 2016-01-26 10:26:11 
+0100 Processing by Spree::CurrencyController#set as JSON Parameters: {"currency"=>"AED"} Spree::Country Load (1.1ms) SELECT "spree_countries".* FROM "spree_countries" WHERE "spree_countries"."name" = 'N/A' LIMIT 1 Spree::User Load (1.2ms) SELECT "spree_users".* FROM "spree_users" WHERE "spree_users"."id" = 1 ORDER BY "spree_users"."id" ASC LIMIT 1 Spree::Order Load (1.2ms) SELECT "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."completed_at" IS NULL AND "spree_orders"."currency" = 'USD' AND "spree_orders"."guest_token" = 'ZtR5IUlQUC40ueZBlo21Pg' AND "spree_orders"."user_id" = 1 LIMIT 1 Spree::Adjustment Load (1.4ms) SELECT "spree_adjustments".* FROM "spree_adjustments" WHERE "spree_adjustments"."adjustable_type" = 'Spree::Order' AND "spree_adjustments"."adjustable_id" IN (6084) ORDER BY spree_adjustments.created_at ASC Spree::Order Load (0.9ms) SELECT "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."user_id" = $1 AND "spree_orders"."completed_at" IS NULL AND (id != 6084) [["user_id", 1]] (0.9ms) BEGIN Spree::Order Exists (1.7ms) SELECT 1 AS one FROM "spree_orders" WHERE ("spree_orders"."number" = 'R501407003' AND "spree_orders"."id" != 6084) LIMIT 1 Spree::LineItem Load (1.3ms) SELECT "spree_line_items".* FROM "spree_line_items" WHERE "spree_line_items"."order_id" = $1 AND (currency != 'AED') ORDER BY created_at ASC [["order_id", 6084]] Spree::Variant Load (1.3ms) SELECT "spree_variants".* FROM "spree_variants" WHERE "spree_variants"."id" = $1 LIMIT 1 [["id", 2]] Spree::Price Load (1.3ms) SELECT "spree_prices".* FROM "spree_prices" WHERE "spree_prices"."deleted_at" IS NULL AND "spree_prices"."variant_id" = $1 AND "spree_prices"."currency" = 'AED' ORDER BY "spree_prices"."id" ASC LIMIT 1 [["variant_id", 2]] Spree::Product Load (1.3ms) SELECT "spree_products".* FROM "spree_products" WHERE "spree_products"."id" = $1 LIMIT 1 [["id", 2]] Spree::Product::Translation Load (1.3ms) SELECT "spree_product_translations".* FROM "spree_product_translations" WHERE "spree_product_translations"."spree_product_id" = $1 [["spree_product_id", 2]] (1.5ms) ROLLBACK Completed 500 Internal Server Error in 56ms 

RuntimeError - no AED price found for 28 Day Ultimate Teatox (28 Day):() Users/TopFormInvestment/.rvm/gems/[email protected]/bundler/gems/spree-cfe7e96539b6/core/app/models/spree/order/currency_updater.rb:34:in `update_line_item_price!' () Users/TopFormInvestment/.rvm/gems/[email protected]/bundler/gems/spree-cfe7e96539b6/core/app/models/spree/order/currency_updater.rb:18:in `block in update_line_item_currencies!' 

請指導我如何解決這個錯誤。因爲我是新的大禮包

回答

1

轉到管理控制檯中的產品。在那裏你可以看到價格標籤,點擊標籤,然後你自己改變價格。

enter image description here

-1

您沒有爲28 Day Ultimate Teatox變體設置AED價格。在update_line_items_price!它有一個本地變量價格,以新設定的貨幣返回變量價格。如果價格不存在,則會引發您遇到的RuntimeError錯誤。

def update_line_item_currencies! 
    line_items.where('currency != ?', currency).each do |line_item| 
     update_line_item_price!(line_item) 
    end 
    end 

    # Returns the price object from given item 
    def price_from_line_item(line_item) 
    line_item.variant.prices.where(currency: currency).first 
    end 

    # Updates price from given line item 
    def update_line_item_price!(line_item) 
    price = price_from_line_item(line_item) 

    if price 
     line_item.update_attributes!(currency: price.currency, price: price.amount) 
    else 
     raise RuntimeError, "no #{currency} price found for #{line_item.product.name} (#{line_item.variant.sku})" 
    end 
    end