Придумайте новую регистрацию пользователя, не сохраняя - PullRequest
2 голосов
/ 01 октября 2019

У меня довольно простая форма входа в приложение Rails 5.2 с Devise, но когда я нажимаю «создать учетную запись», она просто обновляет форму, а не сохраняет.

Моя модель devise User выглядит такэто:

  create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.string "first_name"
    t.string "last_name"
    t.string "membership", default: "Free"
    t.boolean "contributor", default: false
    t.boolean "admin", default: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

И мой пользовательский registrations_controller.rb выглядит так:

class RegistrationsController < Devise::RegistrationsController

  private

  def sign_up_params
    params.require(:user).permit(
      :first_name,
      :last_name,
      :email,

      :membership,
      :contributor,
      :admin,

      :password,
      :password_confirmation)
  end

  def account_update_params
    params.require(:user).permit(
      :first_name,
      :last_name,
      :email,

      :membership,
      :contributor,
      :admin,

      :password,
      :password_confirmation,
      :current_password)
  end
end

Я добавил его к своим маршрутам с помощью devise_for :users, :controllers => { registrations: 'registrations' }.

Я настроилdevise/registrations/new.html.erb вот так, и он правильно отображает:

<main class="my-5 py-5">
  <div class="container">

    <div class="card">

      <div class="card-header text-center">
        Create an Account
      </div> <!-- card header -->

      <div class="card-body px-lg-5">

        <!-- Form -->
        <form class="text-center" style="color: #757575;" action="#!">

        <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
          <%= f.error_notification %>
           <%= render "devise/shared/error_messages" %>


          <div class="form-inputs">
            <h5 class="card-title pb-0 mb-0">Basic Information</h5>
            <div class="row">

              <div class="col-sm-6">
                <div class="md-form mb-1">
                  <%= f.text_field :first_name,
                            class: "form-control",
                            id: "materialFormFirstName",
                            required: true,
                            label: false,
                            autofocus: true,
                            input_html: { autocomplete: "first_name" }%>
                  <label for="materialFormFirstName">First Name</label>
                </div> <!-- md-form -->
              </div> <!-- col -->

              <div class="col-sm-6">
                <div class="md-form mb-1">
                  <%= f.text_field :last_name,
                            class: "form-control",
                            id: "materialFormLastName",
                            required: true,
                            input_html: { autocomplete: "last_name" }%>
                  <label for="materialFormLastName">Last Name</label>
                </div> <!-- md-form -->
              </div> <!-- col -->

            </div> <!-- row -->

            <div class="md-form mb-1">
              <%= f.text_field :email,
                        class: "form-control",
                        id: "materialFormEmail",
                        required: true,
                        input_html: { autocomplete: "email" }%>
              <label for="materialFormEmail">Email Address</label>
            </div> <!-- md-form -->

            <h5 class="card-title pb-0 pt-4 mb-0">Create a Password</h5>
            <div class="row">

              <div class="col-sm-6">
                <div class="md-form mb-1">
                  <%= f.password_field :password,
                        class: "form-control",
                        required: true,
                        hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length),
                        input_html: { autocomplete: "new-password" } %>
                  <label for="materialFormFirstName">Password</label>
                </div> <!-- md-form -->
              </div> <!-- col -->

              <div class="col-sm-6">
                <div class="md-form mb-1">
                  <%= f.password_field :password_confirmation,
                        class: "form-control",
                        required: true,
                        input_html: { autocomplete: "new-password" } %>
                  <label for="materialFormLastName">Confirm Password</label>
                </div> <!-- md-form -->
              </div> <!-- col -->

            </div> <!-- row -->
          </div> <!-- form inputs -->

          <div class="form-actions text-center mt-4">
            <%= f.button :submit, "Create My Account", class: "btn btn-primary" %>
            <br><%= render "devise/shared/links" %>
          </div>
        <% end %>
        </form>

      </div> <!-- card-body -->
    </div> <!-- card -->

  </div> <!-- container -->
</main>

К сожалению, когда я нажимаю кнопку «Создать учетную запись», он просто очищает форму, не сохраняя пользователя. Мой журнал сервера rails выглядит следующим образом:

Started GET "/users/sign_up?utf8=%E2%9C%93&authenticity_token=eXNJIF0BC%2F7Ocwbf5C0ybrCrKS1oPEaHYCAogMtNAEszFUqw5G7J7TdhJOUSvmO6IesUrWL4rxKzjePjUyM5Hg%3D%3D&user%5Bfirst_name%5D=Liz&user%5Blast_name%5D=Bayardelle&user%5Bemail%5D=lizbayardelle%40gmail.com&user%5Bpassword%5D=[FILTERED]&user%5Bpassword_confirmation%5D=[FILTERED]&commit=Create+My+Account" for ::1 at 2019-10-01 10:05:46 -0700
Processing by RegistrationsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"eXNJIF0BC/7Ocwbf5C0ybrCrKS1oPEaHYCAogMtNAEszFUqw5G7J7TdhJOUSvmO6IesUrWL4rxKzjePjUyM5Hg==", "user"=>{"first_name"=>"Liz", "last_name"=>"Bayardelle", "email"=>"lizbayardelle@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create My Account"}
  Rendering devise/registrations/new.html.erb within layouts/application
  Rendered devise/shared/_error_messages.html.erb (1.1ms)
  Rendered devise/shared/_links.html.erb (1.6ms)
  Rendered devise/registrations/new.html.erb within layouts/application (12.1ms)
  Rendered layouts/_navbar.html.erb (3.5ms)
  Rendered layouts/_sidenav.html.erb (2.8ms)
  Rendered layouts/_notifications.html.erb (0.5ms)
  Rendered layouts/_footer.html.erb (0.2ms)
Completed 200 OK in 396ms (Views: 394.9ms | ActiveRecord: 0.0ms)

Кто-нибудь может увидеть, что здесь происходит? Я просмотрел кучу SO сообщений о попытке показать ошибки, но я не могу заставить их выбросить какие-либо ошибки или дать мне представление о том, что идет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...