2015-11-13 121 views
0

即時通訊「Rails Casts ep 141」將基本貝寶集成到我的項目中,但失敗了,但我找不到問題。PayPal與Rails集成

這裏是(用寶石「acts_as_shopping_cart)

class ShoppingCart < ActiveRecord::Base 
    acts_as_shopping_cart 

    def self.paypal_url 
    values ={ 
     :business => '[email protected]', 
     :cmd => '_cart', 
     :upload => 1, 
     :invoice => id 
    } 
    @shopping_cart.shopping_cart_items.each_with_index do |item, index| 
     values.merge!({ 
      "amount_#{index+1}" => item.precio, 
      "item_name_#{index+1}" => item.nombre, 
      }) 
    end 
    "https://www.sandbox.paypal.com/cgi-bin/webscr?"+values.map{|k,v| "#{k}=#{v}"}.join("&") 
    end 

end 

我的車模型,並在那裏我調用的方法paypal_url在這裏

<title>Tu carrito</title> 
<body> 
    <div class="container"> 
    <div class="row"> 
    <div class="col s12"> 
    <ul class="collection with-header"> 
     <li class="collection-header"><h4>Tu lista de productos</h4></li> 
     <% @shopping_cart.shopping_cart_items.each do |sc| %> 
     <li class="collection-item"><div><%= link_to Article.find(sc.item_id).nombre, article_path(Article.find(sc.item_id)) %> 
        <%= link_to shopping_carts_path(:product_id => sc.item_id), method: :delete, data:{ confirm: "Quitar este elemento del carrito?" }, class: "right" do%> 
        <i class="material-icons">delete</i> 
        <%end%></li> 
     <%end%> 
    </ul> 
    <%= link_to "Checkout", @shopping_cart.paypal_url() %> 
    </div> 
    </div> 
</div> 
</body> 

當我嘗試在我的車的節目進入查看,它給我這個消息

undefined method `paypal_url' for #<ShoppingCart:0x007fd00d3e9358> 

我該如何解決它?

回答

1

您需要將paypal_url定義爲實例方法,而不是類方法。 像這樣:

def paypal_url 
    values ={ 
     :business => '[email protected]', 
     :cmd => '_cart', 
     :upload => 1, 
     :invoice => id 
    } 
    shopping_cart_items.each_with_index do |item, index| 
     values.merge!({ 
      "amount_#{index+1}" => item.precio, 
      "item_name_#{index+1}" => item.nombre, 
      }) 
    end 
    "https://www.sandbox.paypal.com/cgi-bin/webscr?"+values.map{|k,v| "#{k}=#{v}"}.join("&") 
end