2017-03-09 2 views
0

Ich habe versucht, eine book zusammen mit dem Erstellen einer user erstellen. So ist das Formular Book in User verschachtelt. Aber ich kann nicht durchgehen, weil ich diesen Fehler hatte:"param fehlt oder der Wert ist leer: user"

param fehlt oder der Wert ist leer

ich bei jeder Frage auf slack hatte einen Blick, wo die Menschen bekommen dieser Fehler.

Aber keiner passt zu meinem Fall.

Also, wenn Sie irgendeine Idee haben, zögern Sie nicht, zu helfen.

user.rb

class User < ApplicationRecord 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
    has_many :books 
    has_many :covers, through: :books 
    has_many :commands 
    accepts_nested_attributes_for :books 
end 

book.rb

class Book < ApplicationRecord 
    has_one :cover 
    belongs_to :user, dependent: :destroy 
end 

registrations_controller

class RegistrationsController < Devise::RegistrationsController 
    def new 
    build_resource(sign_up_params) 
    self.resource.books = Book.new 
    respond_with self.resource 
    end 

    def create 
    super 
    end 

    private 

    def sign_up_params 
    params.require(resource_name).permit(:email, :password, :password_confirmation, :books_attributes[:title, :author_first_name, :author_last_name]) 
    end 
end 

I 0.123.230 geprüftdie

devise/Anmeldungen/new

h2 
    | Sign up 
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| 
    = devise_error_messages! 
    .field 
    = f.label :email 
    br 
    = f.email_field :email, autofocus: true 
    .field 
    = f.label :password 
    - if @minimum_password_length 
     em 
     | (
     = @minimum_password_length 
     | characters minimum) 
    br 
    = f.password_field :password, autocomplete: "off" 
    .field 
    = f.label :password_confirmation 
    br 
    = f.password_field :password_confirmation, autocomplete: "off" 
    = f.fields_for :books do |p| 
    = p.text_field :title 
    = p.text_field :author_first_name 
    = p.text_field :author_last_name 
    .actions 
    = f.submit "Sign up" 
= render "devise/shared/links" 

EDIT

Routen

Rails.application.routes.draw do 
    devise_for :users, controllers: {registrations: 'registrations'} 
    root 'home#index' 
end 
richtig ist gleich

log

Started GET "https://stackoverflow.com/users/sign_up" for ::1 at 2017-03-10 08:59:00 +0100 
Processing by RegistrationsController#new as HTML 
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms) 



ActionController::ParameterMissing - param is missing or the value is empty: user: 
    actionpack (5.0.2) lib/action_controller/metal/strong_parameters.rb:309:in `require' 
    app/controllers/registrations_controller.rb:15:in `sign_up_params' 
    app/controllers/registrations_controller.rb:3:in `new' 
    actionpack (5.0.2) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action' 
    actionpack (5.0.2) lib/abstract_controller/base.rb:188:in `process_action' 
    actionpack (5.0.2) lib/action_controller/metal/rendering.rb:30:in `process_action' 
    actionpack (5.0.2) lib/abstract_controller/callbacks.rb:20:in `block in process_action' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:126:in `call' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:506:in `block (2 levels) in compile' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:455:in `call' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:101:in `__run_callbacks__' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:750:in `_run_process_action_callbacks' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:90:in `run_callbacks' 
    actionpack (5.0.2) lib/abstract_controller/callbacks.rb:19:in `process_action' 
    actionpack (5.0.2) lib/action_controller/metal/rescue.rb:20:in `process_action' 
    actionpack (5.0.2) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' 
    activesupport (5.0.2) lib/active_support/notifications.rb:164:in `block in instrument' 
    activesupport (5.0.2) lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
    activesupport (5.0.2) lib/active_support/notifications.rb:164:in `instrument' 
    actionpack (5.0.2) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
    actionpack (5.0.2) lib/action_controller/metal/params_wrapper.rb:248:in `process_action' 
    activerecord (5.0.2) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
    actionpack (5.0.2) lib/abstract_controller/base.rb:126:in `process' 
    actionview (5.0.2) lib/action_view/rendering.rb:30:in `process' 
    actionpack (5.0.2) lib/action_controller/metal.rb:190:in `dispatch' 
    actionpack (5.0.2) lib/action_controller/metal.rb:262:in `dispatch' 
    actionpack (5.0.2) lib/action_dispatch/routing/route_set.rb:50:in `dispatch' 
    actionpack (5.0.2) lib/action_dispatch/routing/route_set.rb:32:in `serve' 
    actionpack (5.0.2) lib/action_dispatch/routing/mapper.rb:16:in `block in <class:Constraints>' 
    actionpack (5.0.2) lib/action_dispatch/routing/mapper.rb:46:in `serve' 
    actionpack (5.0.2) lib/action_dispatch/journey/router.rb:39:in `block in serve' 
    actionpack (5.0.2) lib/action_dispatch/journey/router.rb:26:in `serve' 
    actionpack (5.0.2) lib/action_dispatch/routing/route_set.rb:725:in `call' 
    warden (1.2.7) lib/warden/manager.rb:36:in `block in call' 
    warden (1.2.7) lib/warden/manager.rb:35:in `call' 
    rack (2.0.1) lib/rack/etag.rb:25:in `call' 
    rack (2.0.1) lib/rack/conditional_get.rb:25:in `call' 
    rack (2.0.1) lib/rack/head.rb:12:in `call' 
    rack (2.0.1) lib/rack/session/abstract/id.rb:222:in `context' 
    rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/cookies.rb:613:in `call' 
    activerecord (5.0.2) lib/active_record/migration.rb:553:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:97:in `__run_callbacks__' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:750:in `_run_call_callbacks' 
    activesupport (5.0.2) lib/active_support/callbacks.rb:90:in `run_callbacks' 
    actionpack (5.0.2) lib/action_dispatch/middleware/callbacks.rb:36:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/executor.rb:12:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/remote_ip.rb:79:in `call' 
    better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call' 
    better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call' 
    better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call' 
    web-console (3.4.0) lib/web_console/middleware.rb:135:in `call_app' 
    web-console (3.4.0) lib/web_console/middleware.rb:28:in `block in call' 
    web-console (3.4.0) lib/web_console/middleware.rb:18:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call' 
    railties (5.0.2) lib/rails/rack/logger.rb:36:in `call_app' 
    railties (5.0.2) lib/rails/rack/logger.rb:24:in `block in call' 
    activesupport (5.0.2) lib/active_support/tagged_logging.rb:69:in `block in tagged' 
    activesupport (5.0.2) lib/active_support/tagged_logging.rb:26:in `tagged' 
    activesupport (5.0.2) lib/active_support/tagged_logging.rb:69:in `tagged' 
    railties (5.0.2) lib/rails/rack/logger.rb:24:in `call' 
    sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/request_id.rb:24:in `call' 
    rack (2.0.1) lib/rack/method_override.rb:22:in `call' 
    rack (2.0.1) lib/rack/runtime.rb:22:in `call' 
    activesupport (5.0.2) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/executor.rb:12:in `call' 
    actionpack (5.0.2) lib/action_dispatch/middleware/static.rb:136:in `call' 
    rack (2.0.1) lib/rack/sendfile.rb:111:in `call' 
    railties (5.0.2) lib/rails/engine.rb:522:in `call' 
    puma (3.7.1) lib/puma/configuration.rb:232:in `call' 
    puma (3.7.1) lib/puma/server.rb:578:in `handle_request' 
    puma (3.7.1) lib/puma/server.rb:415:in `process_client' 
    puma (3.7.1) lib/puma/server.rb:275:in `block in run' 
    puma (3.7.1) lib/puma/thread_pool.rb:120:in `block in spawn_thread' 

Started POST "/__better_errors/8c394ae550fda307/variables" for ::1 at 2017-03-10 08:59:00 +0100 
+0

Try 'self.resource.books = Book.new' und' self.resource.books.build' zu ändern und das Protokoll (Eingang params) für eine Show create aciton –

+0

Ich versuche das, aber es gibt nichts Interessantes im Log: 'ActionController :: ParameterMissing - Parameter fehlt oder der Wert ist leer: user: actionpack (5.0.2) lib/action_controller/metal/strong_parameters.rb: 309: in 'require' app/controllers/registrations_controller.rb: 15: in 'sign_up_params' app/controllers/registrations_controller.rb: 3: in 'neu' actionpack (5.0.2) lib/action_controller/metal/basic_implicit_render.rb: 4: in 'send_action '.....' – Orsay

+0

Versuchen Sie, ': books_attributes' zu': book_attributes' in Ihrer 'params.permit' zu ändern. Wenn dies nicht hilft, zeigen Sie bitte den Teil aus Ihrem Serverprotokoll an, in dem die Anforderungsparameter protokolliert werden. – Raffael

Antwort

0

verstehe ich endlich, wo dieser Fehler kam.

Wenn Sie Ihre Parameter aufrufen, müssen Sie sie nur in create Aktion aufrufen. Ein Aufruf in new Aktion wird den Fehler erzeugen.

Mein Code nach dem Bearbeiten:

class RegistrationsController < Devise::RegistrationsController 
    def new 
    build_resource 
    self.resource.books = Book.new 
    respond_with self.resource 
    end 

    ...... 

end 
Verwandte Themen