2016-06-18 10 views
0

Also folgte ich Ryan Bates Screencasts auf die Verwendung von Paypal Basic für Zahlungen und alles hat gut in der Entwicklung gearbeitet. Wie auch immer, als ich nach Heroku geschickt habe und es versucht habe. Ich habe eine Undefined method 'model_name' for nil:Nil.Nicht definierte Methode 'Modellname' für Nil: Null Klasse

Es scheint, dass es auf der form_for in der Warenkorbseite bricht.

<%= form_tag APP_CONFIG[:paypal_url] do %> 
    <% end %> 

Aus irgendeinem Grund ist es nicht die Variable APP_CONFIG[:paypal_url] geladen. Ich habe es mit Hilfe von nifty: config wie im Tutorial erstellt.

UPDATE

Es ist infact Laden der app_config [: paypal_url]. Sah in die Heroku-Konsole und fand, dass es die Variable lädt, aber sagt undefined method 'model_name' for nil:Nil Class

Ich habe versucht, APP_CONFIG[:paypal_url] zu entfernen und es mit der tatsächlichen URL zu ersetzen, aber es sagt immer noch die gleiche Sache.

Funktioniert alles gut in der Entwicklung, aber nicht auf Heroku. Mache ich etwas falsch?

Jede Hilfe wäre willkommen!

Vielen Dank im Voraus!

Backtrace:

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

Würdest du bitte den Backtrace einfügen? Oder fügen Sie einen Code ein, der 'model_name' aufruft – scorix

+0

@scorix aktualisiert! –

+0

Könnte diese Antwort Ihr Problem lösen? http://stackoverflow.com/questions/10023353/ruby-rails-undefined-method-model-name-for-nilclassclass – scorix

Antwort

0

UPDATE

Ich denke, ich habe das Problem gefunden haben, Sie haben. Könnten Sie den Wert Ihrer @cart Variable überprüfen, wie es scheint, ist es nil. Könnten Sie Ihren Controller instanziieren @cart?

vorherige Antwort

ich nicht ganz sicher bin, aber was passiert, wenn Sie dies tun:

development: &default 
    paypal_email: [email protected] 
    paypal_secret: xxxxxx 
    paypal_cert_id: XXXXXXXXXXXXX 
    paypal_url: "https://www.sandbox.paypal.com/cgi-bin/webscr" 

test: 
    <<: *default 

production: 
    <<: *default 

Auch Sie nicht wirklich den geschickten Config Generator benötigen, Rails bietet bereits eine bequeme Methode zum Laden von ENV abhängige Konfigurationen

#{Your Application Name}::Application.config_for(:app_config) 

Oder noch besser, könnte manverwendenfür Ihre Konfigurationen

UPDATE

die Schienen Config-Methode zu verwenden, vorausgesetzt, könnten Sie haben so etwas wie:

#config/initializers/paypal_config.rb 
PaypalConfig = #{Your Application Name}::Application.config_for(:app_config) 

Überall dort, wo Sie die Config benötigen, können Sie jetzt nutzen:

PaypalConfig[:paypal_url] #instead of the APP_CONFIG 
+0

Sollte ich den 'load_app_config' Initialisierer löschen, der von der nifty: generator Ursache lokal erzeugt wurde, scheint es das zu sein, was die Datei lädt, aber nicht auf Heroku zu funktionieren scheint. Auch die Yml-Datei heißt 'app_config.yml'. Wie lade ich das in der Konfigurationsdatei? –

+0

ehrlich gesagt weiß ich nicht, was der Grund für den Fehler gewesen sein könnte, wenn Sie den Ansatz oben versucht haben. Hast du versucht, Figaro dafür zu benutzen? Sie könnten load_app_config löschen; Hinzufügen eines Snippets für eine neue Datei in meiner Antwort über – oreoluwa

+0

Aber ich werde immer noch die 'app_config.yml' Datei richtig? –