She*_*acu 9 ruby spree strong-parameters ruby-on-rails-4
所以我正在制作一个狂欢扩展,其中我有自己的属性,我Spree::Shipment在结帐过程中添加并添加了一个输入,问题是我的属性不是出货的允许属性的一部分,并且不清楚如何将其添加到允许的属性中.我找到了这个拉动请求的对话,据说要使用
Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚我在哪里放这个!?
"哦,把它放进去spree.rb"
这没有用.我试过把这段代码放进去
lib/spree.rb
lib/spree/permitted_attributes.rb
lib/spree_decorator.rb
lib/spree/permitted_attributes_decorator.rb
Run Code Online (Sandbox Code Playgroud)
(如此处所示)并且所有这些都导致错误抱怨shipment_attributes未被定义(因此可能是在PermittedAttributes评估主文件定义之前运行代码)或者根本没有任何反应.我应该在哪里放置此代码以将我的属性添加到允许的属性列表中?
编辑:由于这对人们来说似乎不清楚,我已经尝试了我发布的链接中列出的所有内容.告诉我尝试其中的东西是非常令人愤怒的.别那样做.
“spree.rb”实际上意味着config/initializers/spree.rb。这是狂欢配置的正确位置。我注意到你/那篇文章提到了各种文件,但从未提到过这个文件。
进入此文件后:
Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)
正如你提到的或
Spree::PermittedAttributes.shipment_attributes.push :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您将需要提供更多详细信息。
正如此处所述,您可以将其放入ApplicationController.
或者您可以覆盖整个 allowed_params,将您的添加到白名单中(通过将此代码直接放入application_controller.rblast 后面end,这将 100% 工作,或者通过创建一个新文件(例如在 lib 下,正如您已经尝试过的那样)):
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
Run Code Online (Sandbox Code Playgroud)