2017-01-27 3 views
1

У меня есть приложение для рельсов, в котором используется приложение, которое отлично работает. Теперь я хочу, чтобы пользователи могли предоставить информацию о своих предыдущих клиентах, которые я хочу добавить в таблицу пользователей. Однако всякий раз, когда он пытается создать нового пользователя, он терпит неудачу, потому что он пытается создать пользователя, используя текущий идентификатор держателей сеансов. Помогите!Rails Позволяет пользователям создавать пользователей

Контроллер

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 

Маршруты

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

Посмотреть

<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> 

Журнал

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 - Пользователь в этом случае должен был новый идентификатор. Вместо этого он попытался предоставить пользователю идентификатор 2, который был идентификатором создающего пользователя. Большое спасибо за любую помощь!

Update

Это отдельная запись в журнале, если я использую полностью хаотического E-mail адрес

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) 

ответ

0

Я был в состоянии пройти через это следующим образом: 1. изменяя переменную из @user на @new_user. 2. Стимулирование действия создания и контроллера в форме с использованием: url 3. Используя Pry, чтобы установить точку останова и ожидать, что все происходит неправильно (binding.pry буквально изменил мою жизнь !!)

Смежные вопросы