所以我跟随Ryan Bates Screencast使用Paypal基本付款,一切都在开发中运作良好。但是,当我部署到Heroku并尝试它。我得到了Undefined method 'model_name' for nil:Nil
。
它似乎打破了购物车页面中的form_for。
<%= form_tag APP_CONFIG[:paypal_url] do %>
<% end %>
由于某种原因,它没有加载变量 APP_CONFIG[:paypal_url]
。我使用nifty:config生成它,如教程中所做。
更新
它实际上正在加载APP_CONFIG [:paypal_url]。查看了heroku控制台,发现它正在加载变量,但是说undefined method 'model_name' for nil:Nil Class
我已尝试删除APP_CONFIG[:paypal_url]
并将其替换为实际网址,但它仍然说同样的事情。
在开发方面都很有用,但在Heroku上却没有。我做错了吗?
任何帮助将不胜感激!
提前致谢!
回溯:
Rendered customer/carts/show.html.erb within layouts/application (6.6ms)
2016-06-18T07:40:46.046130+00:00 app[web.1]: Completed 500 Internal Server Error in 27ms (ActiveRecord: 16.5ms)
2016-06-18T07:40:46.047088+00:00 app[web.1]:
2016-06-18T07:40:46.047099+00:00 app[web.1]: 38:
2016-06-18T07:40:46.047097+00:00 app[web.1]: ActionView::Template::Error (undefined method `model_name' for nil:NilClass):
2016-06-18T07:40:46.047098+00:00 app[web.1]: 37: <%= button_to 'Empty cart', @cart, action: 'destroy', method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-default empty_cart btn_stand' %><br>
2016-06-18T07:40:46.047101+00:00 app[web.1]: 41: <%= hidden_field_tag :size, value: :size %>
2016-06-18T07:40:46.047100+00:00 app[web.1]: 39: <%= form_tag APP_CONFIG[:paypal_url] do %>
2016-06-18T07:40:46.047100+00:00 app[web.1]: 40: <%= fields_for LineItem.find_by(params[:id]) do %>
2016-06-18T07:40:46.047101+00:00 app[web.1]: 42: <%= hidden_field_tag :color, value: :color %>
2016-06-18T07:40:46.047104+00:00 app[web.1]:
2016-06-18T07:40:46.047103+00:00 app[web.1]: app/views/customer/carts/show.html.erb:39:in `_app_views_customer_carts_show_html_erb__1117899742375249126_70196778419380'
2016-06-18T07:40:46.047102+00:00 app[web.1]: 43: <% end %>
2016-06-18T07:40:46.047103+00:00 app[web.1]: app/views/customer/carts/show.html.erb:40:in `block in _app_views_customer_carts_show_html_erb__1117899742375249126_70196778419380'
答案 0 :(得分:0)
<强>更新强>
我想我已经找到了你遇到的问题。您可以查看@cart
变量的值,因为它似乎是nil
。你可以发布你的控制器来实例化你的@cart
吗?
以前的答案
我不完全确定,但是当你这样做时会发生什么:
development: &default
paypal_email: xxxxx@xxxx.com
paypal_secret: xxxxxx
paypal_cert_id: XXXXXXXXXXXXX
paypal_url: "https://www.sandbox.paypal.com/cgi-bin/webscr"
test:
<<: *default
production:
<<: *default
另外,你真的不需要漂亮的配置生成器,Rails已经提供了一种方便的加载ENV依赖配置的方法
#{Your Application Name}::Application.config_for(:app_config)
甚至更好,您可以使用Figaro进行配置
<强>更新强>
要使用rails提供的配置方法,您可以使用以下内容:
#config/initializers/paypal_config.rb
PaypalConfig = #{Your Application Name}::Application.config_for(:app_config)
无论您何时需要配置,现在都可以使用:
PaypalConfig[:paypal_url] #instead of the APP_CONFIG