2014-01-15 2 views
0

Я работал с интеграцией PayPal с rails3.I следил за гибким развитием веб-разработки railscast 4-го издания. но моя неудача я не могу заставить ее работать.undefind метод цена в рельсах приложение с интеграцией с PayPal

В моих повозках файла/show.html.haml я следующий

%table 
    %tr 
     %th Product 
     %th Qty 
     %th Unit Price 
     %th Full Price 

    - for cart in @cart.line_items 
     %tr 
     %td= cart.product.title 
     %td= cart.quantity 
     %td= cart.price 
     %td= cart.full_price 
    = link_to "Continue Shopping", products_url 
    = link_to "Checkout", @cart.paypal_url(products_url) 

затем в моей приложении/модели модели/cart.rb У меня есть PAYPAL методы

has_many :line_items 
    def paypal_url(return_url) 
values = { 
    :business => '[email protected]', 
    :cmd => '_cart', 
    :upload => 1, 
    :return => return_url, 
    :invoice => id 
} 
line_items.each_with_index do |item, index| 
    values.merge!({ 
        "amount_#{index+1}" => item.price, 
        "item_name_#{index+1}" => item.product.title, 
        "item_number_#{index+1}" => item.id 
        #"quantity_#{index+1}" => item.quantity 
       }) 
end 
"https://www.sandbox.paypal.com/cgi-bin/webscr?" + values.to_query 

конец

, но я иду к странице корзины я получил следующее сообщение об ошибке

undefined method `price' for line_items 

я думаю, эта ошибка из-за блок в PAYPAL методы в корзине модели

line_items.each_with_index do |item, index| 
    values.merge!({ 
        "amount_#{index+1}" => item.price, 
        "item_name_#{index+1}" => item.post.title, 
        "item_number_#{index+1}" => item.id 
        #"quantity_#{index+1}" => item.quantity 
       }) 

Infact я не знаю, как это line_items стреляет здесь, откуда эти значения откуда.

Пожалуйста, помогите мне разобраться и исправить эту ошибку. Я новичок в рельсах.

ответ

0

не знаю, как вы определили свой Line_Item (продукт), но я думаю, что вы должны назвать cart.product.price модель, и я думаю, где вы называете full_price на cart, если cart его аль line_item не должны иметь общую цену повозки, вам должен получить это через @cart.full_price.

+0

Спасибо @ accelburst.do у вас есть представление о line_items здесь, в блоке.i не может underdtand, как его стрельба. – monsur

+0

в любое время :), если вы считаете, что ответ был прав, было бы неплохо, если бы вы его отметили;). – accelBurst

+0

хорошо, что он используется для создания URL-адреса paypal, api paypal использует метод get, поэтому значения на URL-адресе, который вы используете для доступа к платежу, - это то, что показывает счет-фактура платежа, и использует индекс для распознавания каждого продукта, обычно вы не нужно много возиться с ним, вы также можете проверить документацию paypal, чтобы узнать, что означает каждый параметр URL-адреса :). – accelBurst

Смежные вопросы