2015-11-17 5 views
7

Also mache ich eine Spree-Erweiterung, in der ich mein eigenes Attribut, das ich Spree::Shipment hinzugefügt und eine Eingabe während des Checkout-Prozesses hinzugefügt haben, das Problem ist mein Attribut ist nicht Teil der zulässigen Attribute für Sendungen, und es ist nicht klar, wie sie zu den zulässigen Attributen hinzugefügt werden. Ich fand das Gespräch auf this pull req dieSpree 3.0 Hinzufügen zu erlaubten Attributen in der Erweiterung

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute 

jedoch zu verwenden, sagt, es ist unklar, wo soll ich sagen !?

"Oh, steckte es in spree.rb"

Dies hilft nicht. Ich habe versucht, in

diesen Code setzen
lib/spree.rb 
lib/spree/permitted_attributes.rb 
lib/spree_decorator.rb 
lib/spree/permitted_attributes_decorator.rb 

(as suggested here) und alle diese Folge in entweder einem Fehler beschweren sich über shipment_attributes nicht definiert ist (so vermutlich der Code ausgeführt wird, bevor die Haupt-Datei definieren PermittedAttributes ausgewertet wird) oder einfach nichts passiert. Wo sollte ich diesen Code platzieren, um mein Attribut der Liste der erlaubten Attribute hinzuzufügen?

Edit: Da dies für die Leute unklar scheint, habe ich alle Dinge in den Links, die ich gepostet habe aufgelistet. Mir zu sagen, dass ich die Dinge in ihnen ausprobieren soll, ist ziemlich ärgerlich. Hör auf.

+0

"Ich denke, es könnte besser sein, es in ApplicationController oder einer anderen Datei, die mit der App geladen wird, obwohl. Sie könnten Probleme auftreten, wo Rails den App-Code neu laden würde und Attribute auf diesem Klassen-Accessor fehlen" - Cited aus dem GitHub-Thread ... hast du es in ApplicationController versucht? – SsouLlesS

+0

Haben Sie versucht, es in einen Initialisierer zu setzen, wie es in der Aktualisierung des von Ihnen geposteten Artikels vorgeschlagen wurde? (http://www.rubycoloredglasses.com/2014/04/strong-parameters-with-spree-extensions/) – jphager2

+0

Ich habe auch ein paar benutzerdefinierte Attribute und ich fügte 'Spree :: PermittedAttributes.shipment_attributes <<: my_custom_attribute' hinzu in config/initializers/spree.rb (am Ende) und es funktionierte für mich –

Antwort

0

Wie gesagt here können Sie es einfach in ApplicationController setzen.

Oder Sie könnten die ganzen permitted_params und fügt hinzu, Sie zu dem weißen Liste außer Kraft setzen (entweder durch diesen Code direkt in application_controller.rb nach dem letzten end setzen, das wird 100% der Arbeit, oder durch eine neue Datei (zum Beispiel unter lib erstellen, wie Sie bereits versucht)):

module Spree 
    module PermittedAttributes 

    # bunch of code 

    @@checkout_attributes = %i(
     email 
     use_billing 
     shipping_method_id 
     coupon_code 
     my_custom_attribute 
    ) 

    # bunch of code 

    end 
end 
+0

Sehen Sie meine Bearbeitung darüber, dass ich in den von mir geposteten Links Dinge ausprobieren soll. – Shelvacu

+0

Ich wollte dich nicht irritieren oder provozieren. Ich kann mir jedoch keinen Fall vorstellen, in dem meine Lösung mit app_controller die Situation nicht beeinflussen würde. Aber wie du es sagst –

2

"spree.rb" config/initializers/spree.rb eigentlich bedeutet. Dies ist der richtige Ort für die Spree-Konfiguration. Ich habe bemerkt, dass Sie in diesem Artikel verschiedene Dateien erwähnt haben, aber nie diese Datei.

Einmal in dieser Datei entweder:

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute 

wie Sie oder

erwähnt
Spree::PermittedAttributes.shipment_attributes.push :my_custom_attribute 

Wenn das nicht funktioniert Sie mehr Details liefern müssen.

Verwandte Themen