首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails允许用户创建用户

Rails允许用户创建用户
EN

Stack Overflow用户
提问于 2017-01-27 13:24:42
回答 1查看 84关注 0票数 1

我有一个rails应用程序使用的设计,这是完美的工作。现在,我希望用户能够提供他们以前的客户的详细信息,我想将这些信息添加到user表中。但是,每当它尝试创建新用户时,它都会失败,因为它试图使用当前会话持有者ID创建用户。帮助!

控制器

代码语言:javascript
复制
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

路由

代码语言:javascript
复制
get "suppliers/previous_projects/new" => 'suppliers/previous_projects#new'
post "suppliers/previous_projects/create" => 'suppliers/previous_projects#create'

视图

代码语言:javascript
复制
<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>

日志

代码语言:javascript
复制
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"=>"steve3@example.com"}, "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", "steve3@example.com"], ["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 -本例中的用户应该有一个新的id。相反,它试图给用户一个2的id,这是创建用户的id。非常感谢您的帮助!

更新

如果我使用一个完全随机的电子邮件地址,这是一个单独的日志条目。

代码语言:javascript
复制
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"=>"ThisIsSomeRandomEmail@Email.com"}, "commit"=>"Save User"}
(0.9ms)  BEGIN
User Exists (0.7ms)  SELECT  1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2  [["email", "thisissomerandomemail@email.com"], ["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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 12:18:18

我能够通过: 1.将变量从@user更改为@new_user来完成这一任务。2.使用:URL3以形式规定创建操作和控制器。使用Pry设置一个断点,并期待一切出错的地方(binding.pry确实改变了我的生活!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41895020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档