Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Spree来宾电子邮件已保存_Ruby On Rails 4_Gem_Rubygems_E Commerce_Spree - Fatal编程技术网

Ruby on rails 4 Spree来宾电子邮件已保存

Ruby on rails 4 Spree来宾电子邮件已保存,ruby-on-rails-4,gem,rubygems,e-commerce,spree,Ruby On Rails 4,Gem,Rubygems,E Commerce,Spree,我已经在我的Spree应用程序中实现了电话验证 因此,用户在下单之前必须先核实电话号码,但一旦用户以来宾身份下单,下一次存储他的电子邮件时,它会直接发送到/checkout/address,而不必先进入/checkout/registration 我在哪里可以修改此代码,以便客人结账总是先转到/checkout/registration 编辑: 我检查了checkout_控制器,我想我可以使用checkout#edit操作编辑功能 但是我无法在gem文件中找到它。您可以为签出\u控制器创建一个装

我已经在我的Spree应用程序中实现了电话验证

因此,用户在下单之前必须先核实电话号码,但一旦用户以来宾身份下单,下一次存储他的电子邮件时,它会直接发送到
/checkout/address
,而不必先进入
/checkout/registration

我在哪里可以修改此代码,以便客人结账总是先转到
/checkout/registration

编辑:

我检查了
checkout_控制器
,我想我可以使用
checkout#edit
操作编辑功能


但是我无法在gem文件中找到它。

您可以为
签出\u控制器
创建一个装饰器,例如
app/controllers/spree/checkout\u controller\u decorator.rb
,并将其更改为如下内容(装饰器文件的代码):

请注意,在用户被重定向后,您必须处理重定向回签出页面的问题


您也可以更改用户模型上的某些内容,以确保用户有电话号码,但这可能与来宾功能冲突。

请添加Spree版本。我在“@order.bill_Address | |=Address.build| default”行上得到“未初始化的固定地址”。我更改了答案,请立即重试。代码不完整只是你如何解决的一个预感或方向,你会发现一些地方需要调整。该模块是必需的,否则将需要使用Spree::Address alsoThanks alot来帮助:)
module Spree
  CheckoutController.class_eval do
    def before_address
      # if the user has a default address, a callback takes care of setting
      # that; but if he doesn't, we need to build an empty one here
      if current_user.phone_number.present?
        @order.bill_address ||= Address.build_default
        @order.ship_address ||= Address.build_default if @order.checkout_steps.include?('delivery')
      else
        # some error telling that you need to fill the phone number
        redirect_to registration_path
      end
    end
  end
end