Entwickeln und Ruby on Rails: Bei der Anmeldung schlagen alle Validierungen mit "Can't be Blank" fehl

stimmen
1

Ich versuche, ein Affiliateverwendendes Devise zu registrieren.

/verbundene Unternehmen/Registrierungen_controller.rb

class Affiliates::RegistrationsController < 
    Devise::RegistrationsController
    include StatesHelper, ApplicationHelper

    before_action :configure_sign_up_params, only: [:create]
    before_action :configure_account_update_params, only: [:update]

    # GET /resource/sign_up
    def new
        @plan = AffiliatePlan.find_by(nickname: params.permit(:plan)[:plan].downcase)
        super
    end

    # GET /resource/edit
    def edit
        @states = us_states
        super
    end

    # PUT /resource
    def update
        @states = us_states
        super
        if resource.address_coordinates.length > 1 
            resource.services.each{ |s| s.update_attributes( {lonlat: POINT(#{resource.address_coordinates.join(' ')})})}
        end 
    end

    def update_resource(resource, params)
        resource.update_without_password(params)
    end

    protected

    # If you have extra params to permit, append them to the sanitizer.
    def configure_sign_up_params
        devise_parameter_sanitizer.permit(:sign_up, keys: [:business_name, :website, :phone, :affiliate_plan_id, contact_name: [:first_name, :last_name], address: [:street_address, :address_line2, :city, :state, :zip_code]])
    end

    # If you have extra params to permit, append them to the sanitizer.
    def configure_account_update_params
        devise_parameter_sanitizer.permit(:account_update, keys: [:business_name, :website, :phone, :affiliate_plan_id, contact_name: [:first_name, :last_name], address: [:street_address, :address_line2, :city, :state, :zip_code]])
    end

    # The path used after sign up.
    def after_sign_up_path_for(resource)
        affiliate_signups_path
    end
end

/verbundene Unternehmen/Registrierungen/neu.html.erb

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>

    <%= devise_error_messages! %>

    <% if @plan %>
        <%= f.hidden_field :affiliate_plan_id, value: @plan.id %>
    <% else %>
        <%= f.hidden_field :affiliate_plan_id, value: resource.affiliate_plan_id %>
    <% end %>

    <%= f.fields_for :contact_name do |n| %>

        <%= n.text_field :first_name, autofocus: true, placeholder: First Name*, class: form-control, required: true %>

        <%= n.text_field :last_name, placeholder: Last Name*, class: form-control, required: true  %>
     <% end %>

    <%= f.text_field :business_name, placeholder: Company Name, class: form-control %>

    <%= f.email_field :email, autocomplete: email, placeholder: Email Address*, class: form-control, required: true %>

    <%= f.password_field :password, autocomplete: new-password, placeholder: Create a Password, class: form-control, required: true %>

    <%= f.password_field :password_confirmation, autocomplete: new-password, placeholder: Confirm Password, class: form-control, required: true %>


    <%= f.submit Next, class: btn btn-primary btn-sm %>
<% end %>

routen.rb

devise_for :affiliates, path: partners, controllers: {
  sessions: 'affiliates/sessions',
  registrations: 'affiliates/registrations'
}

Beim Absenden des Formulars erhalte ich immer Validierungsfehler

7 errors must be fixed
   - Email can't be blank
   - Password can't be blank
   - Password is too short (minimum is 9 characters)
   - Password must contain at least one digit
   - Password must contain at least one punctuation mark or symbol
   - Password must contain at least one upper-case letter
   - Affiliate plan must exist

Das Protokoll zeigt ein sofortiges Rollback, aber keine weiteren Informationen

Started POST /partners for 127.0.0.1 at 2020-05-25 14:09:59 -0400
Processing by Affiliates::RegistrationsController#create as HTML
  Parameters: {utf8=>✓, authenticity_token=>SowYVWzTqVYdwZWjYjNc3hlGC5UITqt+bKjQuSATOpLcdVGb52x7gEi8p15MmhlZrLNLpD07fCxp5Gya8/cQMg==, affiliate=>{affiliate_plan_id=>2, contact_name=>{first_name=>Stephen, last_name=>Tilly}, business_name=>1995, email=>sarwerera@email.com, password=>[FILTERED], password_confirmation=>[FILTERED]}, commit=>Next}
(0.2ms)  BEGIN
  ↳ app/controllers/affiliates/registrations_controller.rb:18
   (0.2ms)  ROLLBACK
  ↳ app/controllers/affiliates/registrations_controller.rb:18
  Rendering affiliates/registrations/new.html.erb within layouts/application
  Rendered affiliates/registrations/new.html.erb within layouts/application (2.6ms)

Ich bin mir nicht ganz sicher, wie es weitergehen soll, irgendwelche Ideen?

Veröffentlicht am 25/05/2020 um 20:36
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich kann anscheinend noch nicht kommentieren und einige Fragen stellen, daher werde ich einige Vermutungen anstellen. Aber hier sind einige fehlende Stücke, nach denen ich suche: Das AffiliateModell und ob Sie es als die Haupt-Deviseressource konfiguriert haben oder ob Sie ein anderes z.B. User.

Ich nehme an, Sie haben ein anderes Devise-Ressourcen-Setup, weshalb Sie dieses Setup erstellt haben. In diesem Fall könnte einer der Hauptgründe dafür sein, dass Devise dieses Modell als Ressource erwartet, weshalb es Fehler über fehlende Validierungen machtUser. Seit Devise::RegistrationsController erwartet eine, die die E-Mail und das Passwort params[:user]enthält

Vorschlag: Wenn das der Fall ist, würde ich erwägen, das Affiliate-Profil mit der bestehenden Ressource zu verknüpfen und von dort aus weiterzumachen. D.h. Affiliate -> gehört:zu -> Benutzer. Es würde Ihnen das Leben leichter machen ;)

Falls meine Annahmen falsch sind, lassen Sie es mich wissen ????

Beantwortet am 08/06/2020 um 07:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more