Mein routes.rb sieht aus, als solche:Rails - UndefinedMethod in Modell # neue Aktion
resources :users do
resources :reservations do
resources :orders
end
end
resources :reservations do
resources :orders
end
Modelle:
class User < ActiveRecord::Base
has_many :reservations
has_many :orders, :through => :reservations
end
class Reservation < ActiveRecord::Base
has_one :order
belongs_to :user
end
class Order < ActiveRecord::Base
belongs_to :reservation
end
Controller:
class ReservationsController < ApplicationController
def new
if current_user
@user = User.find_by_id(current_user)
@reservation = @user.reservations.build
else
@reservation = Reservation.new
end
end
#leaving out the save portion to make question shorter.
def create
if current_user
@user = User.find(current_user)
@reservation = @user.reservations.create(reservation_params)
else
@reservation = Reservation.new(reservation_params)
end
end
end
class OrdersController < ApplicationController
def new
if current_user
@user = User.find_by_id(current_user)
@order = @user.build_order
else
@reservation = Reservation.find_by_id(params[:reservation_id])
@order = @reservation.build_order
end
end
def create
if current_user
@user = User.where(current_user)
@order = @user.orders.create(order_params)
else
@reservation = Reservation.find(params[:reservation_id])
@order = @reservation.create_order(order_params)
end
end
end
Fehler
NoMethodError in Orders # new
nicht definierte Methode `build_order 'für #
Voll Stack-Trace ist als solche:
activemodel (4.2.5) lib/active_model/attribute_methods.rb:433:in `method_missing'
app/controllers/orders_controller.rb:29:in `new'
actionpack (4.2.5) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.2.5) lib/abstract_controller/base.rb:198:in ` process_action'
actionpack (4.2.5) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.5) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.5) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.5) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.5) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
activesupport (4.2.5) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.5) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.5) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
activesupport (4.2.5) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
activesupport (4.2.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.5) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.5) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.5) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (4.2.5) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.5) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.5) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.5) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.5) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.5) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.5) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.5) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.5) lib/action_controller/metal.rb:196:in `dispatch'
actionpack (4.2.5) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.5) lib/action_controller/metal.rb:237:in `block in action'
actionpack (4.2.5) lib/action_dispatch/routing/route_set.rb:76:in `call'
actionpack (4.2.5) lib/action_dispatch/routing/route_set.rb:76:in `dispatch'
actionpack (4.2.5) lib/action_dispatch/routing/route_set.rb:45:in `serve'
actionpack (4.2.5) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.5) lib/action_dispatch/journey/router.rb:30:in `each'
actionpack (4.2.5) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.5) lib/action_dispatch/routing/route_set.rb:817:in `call'
rack (1.6.4) lib/rack/etag.rb:24:in `call'
rack (1.6.4) lib/rack/conditionalget.rb:25:in `call'
rack (1.6.4) lib/rack/head.rb:13:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.5) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
activerecord (4.2.5) lib/active_record/migration.rb:377:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.5) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
activesupport (4.2.5) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
activesupport (4.2.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.5) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.5) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.5) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.5) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.5) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/static.rb:116:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.5) lib/rails/engine.rb:518:in `call'
railties (4.2.5) lib/rails/application.rb:165:in `call'
rack (1.6.4) lib/rack/content_length.rb:15:in `call'
puma (3.1.0) lib/puma/configuration.rb:227:in `call'
puma (3.1.0) lib/puma/server.rb:561:in `handle_request'
puma (3.1.0) lib/puma/server.rb:406:in `process_client'
puma (3.1.0) lib/puma/server.rb:271:in `block in run'
puma (3.1.0) lib/puma/thread_pool.rb:111:in `call'
puma (3.1.0) lib/puma/thread_pool.rb:111:in `block in spawn_thread'
Ich bin in der Lage eine Reservierung und machen, wenn nicht, es gebe' current_user ', aber wo ich auf ein Problem stoße ist, wenn ein Benutzer angemeldet ist, kann ich eine Reservierung machen und es in der Datenbank speichern, aber dann bekomme ich keinen Fehler in der Reihenfolge # new controller @order = @ user.build_order Zeile. Ich habe viele Varianten ausprobiert wie @ user.order.new, @ user.order.build
Ich habe auch versucht, @order = @ user.reservations.order (params [: reservation_id]), aber das führt Ich zu einem 'to_key' Problem für die Bestellungen _form.
Keine der Optionen, die ich erwähnt habe, funktionieren noch mehr Optionen, die ich ausprobiert habe, an die ich mich nicht mehr erinnere. Ich würde die Hilfe sehr schätzen.
Bitte lassen Sie mich wissen, wenn weitere Informationen von mir benötigt werden, werde ich versuchen, es bald wie möglich zu veröffentlichen.
Geben Sie die vollständige Fehlernachricht mit der Zeilennummer ein. – Substantial
@Substantial hat gerade die Fehlermeldungen hinzugefügt, kann aber scheinbar keine Zeilennummern zu den eigentlichen Fehlermeldungen hinzufügen. – ayounis90
Ich sehe sie. Du hast es richtig gemacht. – Substantial