2011-08-07 46 views
0

我试图将braintree gem并入我的rails 3应用程序时遇到错误。什么是真正奇怪的是,我能够成功它在一个应用程序我的系统上安装,然后当我尝试在另一个应用程序运行它是收到以下错误:Braintree支付网关`confirm_payment_url'

undefined local variable or method `confirm_payment_url' for #<#<Class:0x103a2bf08>:0x103a2a298> 

这里是默认的代码,我是使用:

<h1>Payment: $<%= h @amount %></h1> 

<% if @result -%> 
    <div style="color: red;"><%= h @result.errors.size %> error(s)</div> 
<% end -%> 

<%= form_for :transaction, 
    :params => @result && @result.params[:transaction], 
    :errors => @result && @result.errors.for(:transaction), 
    :builder => ApplicationHelper::BraintreeFormBuilder, 
    :url => Braintree::TransparentRedirect.url, 
    :html => {:autocomplete => "off"} do |f| -%> 
    <%= field_set_tag "Customer" do -%> 
    <%= f.fields_for :customer do |c| -%> 
    <div><%= c.label :first_name, "First Name" %></div> 
    <div><%= c.text_field :first_name %></div> 
    <div><%= c.label :last_name, "Last Name" %></div> 
    <div><%= c.text_field :last_name %></div> 
    <div><%= c.label :email, "Email" %></div> 
    <div><%= c.text_field :email %></div> 
<% end -%> 
<% end -%> 
<%= field_set_tag "Credit Card" do -%> 
<%= f.fields_for :credit_card do |c| -%> 
    <div><%= c.label :number, "Number" %></div> 
    <div><%= c.text_field :number %></div> 
    <div><%= c.label :expiration_date, "Expiration Date (MM/YY)" %></div> 
    <div><%= c.text_field :expiration_date %></div> 
    <div><%= c.label :cvv, "CVV" %></div> 
    <div><%= c.text_field :cvv %></div> 
<% end -%> 
<% end -%> 
<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
    :redirect_url => confirm_payment_url,   
    :transaction => {:type => "sale", :amount => @amount} 
    ) %> 
    <%= f.submit "Submit" %> 
<% end -%> 

,这里是支付控制器

def confirm 

@result = Braintree::TransparentRedirect.confirm(request.query_string) 
if @result.success? 
    render :action => "confirm" 
else 
    @amount = calculate_amount 
    render :action => "new" 
end 
end 

能有什么样的变化,这样的结果,其中一个Rails应用程序会认识到这一点的方法,但另一不会呢?真的在我的头上挠头。谢谢你的帮助。

+0

这两个应用程序有什么不同?它们是否是Rails的相同版本? –

回答

2

你永远不会定义confirm_payment_url你很可能在你的应用程序路线中有一个错误,但是如果没有更多的信息,它就会变得很困难。

在Braintree为透明重定向提供的文档中,似乎这是您希望在处理付款后将客户发回给的url,并且未提供confirm_payment_url Braintree。你可以看到我参考的文档here

+0

是 - 我的路线失踪: 匹配“支付/确认” =>“支付#确认”,:为=>:confirm_payment 这件事很奇怪,因为我仍然有 比赛“金/新”:以=>'payments#new',:as =>:new_payment 感谢您的帮助! – Andrew

+0

随时,很高兴我能够帮助。 –