ruby-on-rails - Paypal 与 Rails 集成

标签 ruby-on-rails ruby ruby-on-rails-4 paypal

我正在关注“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/

相关文章:

ruby - 如何使用 Ruby(无 RoR)保持 mysql 连接(mysql2 gem)

ruby-on-rails - 如何让 Rails 响应基于 header 的 json

ruby-on-rails - Ruby FileUtils.mkpath 在不同环境下的行为不同

ruby-on-rails - 更改文件类型回形针

ruby-on-rails - jquery ajax 使用 Rails View 渲染部分

arrays - 从 Ruby 中的嵌套哈希和数组中提取值

jquery - Ajax在Rails 4中重新加载div内容错误+哪里放置远程: true

ruby-on-rails - Rails 使用错误的自定义命名路由

ruby-on-rails - 性能测试 - 测试 :profile vs test:benchmark, 墙上时间与处理时间

ruby-on-rails - 如何防止生产中出现不必要的路由错误