我正在关注“Rails Casts ep 141”以将基本的 Paypal 集成到我的项目中,但它失败了,我找不到问题。
这是我的购物车模型(使用 gem 'acts_as_shopping_cart)
class ShoppingCart < ActiveRecord::Base
acts_as_shopping_cart
def self.paypal_url
values ={
:business => 'admin@ing.com',
: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>
当我尝试进入我的购物车的 Shows View 时,它会给我这条消息
undefined method `paypal_url' for #<ShoppingCart:0x007fd00d3e9358>
我该如何解决?
最佳答案
您需要将 paypal_url 定义为实例方法,而不是类方法。 像这样:
def paypal_url
values ={
:business => 'admin@ing.com',
: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
关于ruby-on-rails - Paypal 与 Rails 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696012/