2017-01-27 2 views
1

Ich habe eine Rails-App mit Devise, die perfekt funktioniert. Ich möchte jetzt, dass Benutzer die Details ihrer vorherigen Kunden bereitstellen können, die ich der Benutzertabelle hinzufügen möchte. Wenn es jedoch versucht, den neuen Benutzer zu erstellen, schlägt es fehl, da es versucht, den Benutzer mit der aktuellen Sitzungshalter-ID zu erstellen. Hilfe!Rails Benutzer können Benutzer erstellen

-Controller

class Suppliers::PreviousProjectsController < ApplicationController 
before_action :authenticate_user! 

def new 
    @new_user = User.new 
end 

def create 
    @new_user = User.new(previous_projects_params) 
    if @new_user.save 
     redirect_to root_path, notice: 'Previous customer created' 
    else 
     render :new 
    end 
end 

protected 
    def previous_projects_params 
     params.require(:user) 
        .permit(:first_name, :last_name, :phone, :email) 
    end 


end 

Routen

get "suppliers/previous_projects/new" => 'suppliers/previous_projects#new' 
post "suppliers/previous_projects/create" => 'suppliers/previous_projects#create' 

Ansicht

<div id="customer_dashboard"> 
<div class="container-fluid"> 
<div class="row"> 
    <div class="col-sm-3 col-md-2 sidebar"> 
     <%= render 'customers/menu' %> 
    </div> 
    <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"> 
      <h1 class="page-header"><%= @title %></h1> 
      <div class= "project_form"> 
       <%= form_for(@user, url: suppliers_previous_projects_create_path(@user)) do |f| %> 
        <div class="form-group col-sm-6"> 
        <%= f.label :first_name, class: "required" %><br /> 
        <%= f.text_field :first_name, autofocus: true, :required => 'required', class: "form-control" %> 
        </div> 

        <div class="form-group col-sm-6"> 
        <%= f.label :last_name, class: "required" %><br /> 
        <%= f.text_field :last_name, :required => 'required', class: "form-control" %> 
        </div> 

        <div class="form-group col-sm-6"> 
        <%= f.label "Mobile Number", class: "required" %><br /> 
        <%= f.text_field :phone, :required => 'required', class: "form-control" %> 
        </div> 

        <div class="form-group col-sm-6"> 
        <%= f.label :email, class: "required" %><br /> 
        <%= f.email_field :email, :required => 'required', class: "form-control" %> 
        </div> 
        <div class="actions center space_big"> 
         <%= f.submit "Save User", class: "btn btn-lg btn-success" %> 
        </div> 
       <% end %> 
      </div> 
     </div> 
    </div> 
</div> 

The Log

Started POST "/suppliers/previous_projects/create" for ::1 at 2017-01-27 11:04:08 +0200 
Processing by Suppliers::PreviousProjectsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"u+/ydnO4lSBcJtuqOWNiqccRWosTydAZ3Kd81wwO+DbveFRUYw53JsI0x6bolaSQTapgSrw6njnboBDFfSNlIw==", "user"=>{"first_name"=>"Stev", "last_name"=>"Three", "phone"=>"23092309029309", "email"=>"[email protected]"}, "commit"=>"Save User"} 
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]] 
(0.2ms) BEGIN 
User Exists (1.1ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]] 
(0.8ms) ROLLBACK 
Rendering suppliers/previous_projects/new.html.erb within layouts/application 
Rendered customers/_menu.html.erb (2.8ms) 
Rendered suppliers/previous_projects/new.html.erb within layouts/application (16.3ms) 
Completed 200 OK in 152ms (Views: 141.6ms | ActiveRecord: 2.5ms) 

FYI - Der Benutzer sollte in diesem Fall eine neue ID haben. Stattdessen versuchte es, dem Benutzer eine ID von 2 zu geben, die die ID des erstellenden Benutzers war. Ich schätze jede Hilfe sehr!

aktualisieren

Dies ist ein separates Log-Eintrag, wenn ich eine völlig zufällige E-Mail-Adresse verwenden

Started POST "/suppliers/previous_projects/create" for ::1 at 2017-01-27 16:33:25 +0200 
Processing by Suppliers::PreviousProjectsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ezEpssYnOU1LProVW4I14qKjINcRfs2/EJdsHlrSGc/bzZUxny8NbbQJgEjEZljWxtyqhJ+mwYBkyGuiitjqeg==", "user"=>{"first_name"=>"Random First Name", "last_name"=>"Random Last Name", "phone"=>"093409239032902", "email"=>"[email protected]"}, "commit"=>"Save User"} 
(0.9ms) BEGIN 
User Exists (0.7ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]] 
(12.1ms) ROLLBACK 
Rendering suppliers/previous_projects/new.html.erb within layouts/application 
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]] 
Rendered customers/_menu.html.erb (5.7ms) 
Rendered suppliers/previous_projects/new.html.erb within layouts/application (13.2ms) 
Completed 200 OK in 161ms (Views: 113.4ms | ActiveRecord: 14.2ms) 

Antwort

0

konnte ich durch diese erhalten, indem: 1. die Variable aus @user Ändern zu @new_user. 2. Legen Sie die Erstellungsaktion und den Controller im Formular fest: url 3. Setzen Sie mit Pry einen Unterbrechungspunkt ein und erwarten Sie, wo alles schief gelaufen ist (binding.pry hat buchstäblich mein Leben verändert !!)

Verwandte Themen