Почему при регистрации правильных параметров происходит сбой разработки? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь зарегистрироваться с помощью устройства для приложения, которое я делаю.Действие отправки формы отправляет правильные параметры, но мне не удается выполнить одну проверку присутствия.Эта проверка присутствия является полем флажка, где пользователь выбирает при регистрации, являются ли они одиночными или нет.

Вот код для views/devise/registrations/new.html.erb

<div class="radio">
  <%= f.label :relationship_status%><br />
  <%= radio_button_tag(:relationship_status, "single") %>
  <%= label_tag(:single, "Single") %>
  <%= radio_button_tag(:relationship_status, "relationship") %>
  <%= label_tag(:relationship, "In a relationship") %>
</div>

Вот ApplicationController, где яукажите параметры, которые должны быть переданы помимо значений по умолчанию, предоставленных devise:

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name,
                                      :username, :birthday,
                                      :relationship_status])

  end
end

Вот моя пользовательская модель, в которой я устанавливаю основные валидаторы присутствия

class User < ApplicationRecord

   devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :validatable
   validates :name, :email, :username, 
   :birthday,:relationship_status, presence: true
end

Наконец, вот изображениенажав «Зарегистрироваться», я заполняю форму: enter image description here

ActiveRecord::Schema.define(version: 2019_06_05_024141) do

  create_table "users", force: :cascade do |t|
    t.string "name", null: false
    t.string "username", null: false
    t.datetime "birthday", null: false
    t.string "relationship_status", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    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.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end
end

Как вы можете видеть на картинке, relationship_status явно настроен на одиночный.Тем не менее, я продолжаю получать сообщение о том, что оно не может быть пустым.Я в тупике, и некоторая помощь будет оценена.Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Я не знаю, как это было исправлено, но мой подход заключался в подтверждении с помощью byebug.При этом я выполнил rails generate devise:controllers [scope] и изменил свой route.rb следующим образом:

Rails.application.routes.draw do
  devise_for :users, controllers: {
    sessions: 'users/sessions'
  }
end

Это исправило это.

0 голосов
/ 05 июня 2019

не могли бы вы попробовать с этим.

<div class="radio">
  <%= f.label :relationship_status%><br />
  <%= f.radio_button(:relationship_status, "single") %>
  <%= label_tag(:single, "Single") %>
  <%= f.radio_button(:relationship_status, "relationship") %>
  <%= label_tag(:relationship, "In a relationship") %>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...