Authentication 在自定义设备登录表单的视图中显示验证错误

Authentication 在自定义设备登录表单的视图中显示验证错误,authentication,ruby-on-rails-4,devise,spree,spree-auth-devise,Authentication,Ruby On Rails 4,Devise,Spree,Spree Auth Devise,目前,我正在使用Spree Commerce构建一个Rails平台,我需要两个Desive登录表单 默认的设计登录表单已经实现。对于第二个(自定义)设计表单,我创建了以下视图: global\u login.html.erb <div class="inner"> <h2 class="large-margin"> Login </h2> <%= form_for(Spree::User.new, :url => spree

目前,我正在使用Spree Commerce构建一个Rails平台,我需要两个Desive登录表单

默认的设计登录表单已经实现。对于第二个(自定义)设计表单,我创建了以下视图:

global\u login.html.erb

<div class="inner">
  <h2 class="large-margin">
    Login
   </h2>
   <%= form_for(Spree::User.new, :url => spree_login_path) do |f| %>
     <%= f.error_messages %>
     <%= f.email_field :email, {:value => params[:email], :placeholder => 'Email address', :class => 'input'} %>
     <%= f.password_field :password, {:placeholder => 'Password', :class => 'input'} %>
     <%= f.submit 'Login', :class => 'submit' %>
  <% end %>
</div>

登录
spree_登录路径)do | f |%>
参数[:email],:占位符=>'email address',:class=>'input'}%>
'密码',:class=>'input'}%>
'提交'>
此视图确实显示设计登录表单。然而,每次我提交表单时,我都会被重定向到默认的designe视图,其中会显示验证错误

有人知道这个问题的解决办法吗


干杯

我找到了解决这个问题的方法。我在其中一个名为“inside_cart”的表单中添加了一个参数。当请求发送到#create方法时,我检查参数是否存在

我重写了Spree::UserSessionController#create方法,如下所示:

Spree::UserSessionsController.class_eval do
  layout false

  def create
    authenticate_spree_user!
      if spree_user_signed_in?
        respond_to do |format|
          format.html {
            flash[:success] = Spree.t(:logged_in_succesfully)
            redirect_back_or_default(after_sign_in_path_for(spree_current_user))
          }
          format.js {
            user = resource.record
            render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
          }
        end
      else
        if params[:spree_user] && params[:spree_user][:inside_cart]
          flash.now[:error] = t('devise.failure.invalid')
          render :new, layout: false
        else
          flash.now[:error] = t('devise.failure.invalid')
          render 'spree/users/global_login', layout: 'spree/layouts/spree_application'
        end
      end
    end
  end