Кнопка отправки Rails не сохраняет данные - PullRequest
0 голосов
/ 26 декабря 2018

Я использую Rails 5.2.2.Я пытаюсь использовать вложенные атрибуты с устройством.Я создал ассоциации, миграции и представления.

Вот мой route.rb:

Rails.application.routes.draw do
  devise_for :users
  resources :companies, :has_many => :users
  get 'welcome/index'
  root "welcome#index"
end

User.rb:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  belongs_to :company
  accepts_nested_attributes_for :company

end

Company.rb:

class Company < ApplicationRecord
    has_many :users
end

Мой пользовательский параметр, разрешающий проблему:

module DevisePermitter
    extend ActiveSupport::Concern

    included do 
        before_action :permitted_devise_parameters, if: :devise_controller?

    end



    def permitted_devise_parameters
        devise_parameter_sanitizer.permit(:sign_up, keys: [:name,:gsm,:role,:company_id,company_attributes:[:name,:tax_no,:city]])
        devise_parameter_sanitizer.permit(:account_update, keys: [:name,:gsm,:id_no,:profile_picture,:socials])
    end
end

Когда я нажимаю кнопку отправки, она возвращает ту же страницу регистрации без записи значений.Вот ответ сервера:

Started GET "/users/sign_up?utf8_SHORTENED-HERE" for 127.0.0.1 at 2018-12-26 10:32:51 +0300
Processing by Devise::RegistrationsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"yBS9+sMyfSq0BYAd5LuodZCuJ9vHLFaxohrZjbOCdmv1m4SYUVI4XpE2GKmeY1eM0GhHEgtcnBZK7I8c0PuAHA==", "user"=>{"email"=>"asd@yandex.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "company_attributes"=>{"name"=>"asd asd", "tax_no"=>"42123", "city"=>"asda"}, "name"=>"sadaf", "gsm"=>"1231313", "role"=>"asdas"}, "commit"=>"Register"}
  Rendering devise/registrations/new.html.erb within layouts/devise1
  Rendered devise/registrations/new.html.erb within layouts/devise1 (3.4ms)
Completed 200 OK in 19ms (Views: 17.7ms | ActiveRecord: 0.0ms)

Когда я пытаюсь сохранить данные с помощью консоли rails, это работает:

User.create!({"email"=>"asd@yandex.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "company_attributes"=>{"name"=>"asdasd", "tax_no"=>"asdasd", "city"=>"asdasd"}, "name"=>"asdasd asd", "gsm"=>"313121", "role"=>"asdasd"})

Я передаю что-то, но не могу найти, что этоесть.

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

Я нашел проблему.На мой взгляд, проблема была в том, что тег form_for не генерировал action = "\ users" и method = "post" в элементе формы.

Решено путем создания действительного тега form_for.

0 голосов
/ 26 декабря 2018

Удалите company_id из метода разрешенных_добавок_параметров.

def permitted_devise_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name,:gsm,:role, company_attributes:[:name,:tax_no,:city]])
    devise_parameter_sanitizer.permit(:account_update, keys: [:name,:gsm,:id_no,:profile_picture,:socials])
end
0 голосов
/ 26 декабря 2018

Попробуйте что-то подобное в /app/controllers/application_controller.rb

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

    protected
    def permitted_devise_parameters
        devise_parameter_sanitizer.permit(:sign_up, keys: [:name,:gsm,:role,:company_id,company_attributes:[:name,:tax_no,:city]])
        devise_parameter_sanitizer.permit(:account_update, keys: [:name,:gsm,:id_no,:profile_picture,:socials])
    end
end

и закомментируйте коды внутри DevisePermitter и посмотрите, что произойдет

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