Chantelle Becker Chantelle Becker - 1 month ago 7
Ruby Question

Weird Error: AbstractController::ActionNotFound - Ruby on Rails

Okay y'all, here goes!

The error is:

AbstractController::ActionNotFound at /venues/1
The action 'update' could not be found for VenuesController


I'm also getting this error for the action 'destroy' in the VenuesController.

Same exact set of update/destroy issues in my GamesController that looks identical.

Routes:

Rails.application.routes.draw do
devise_for :users
resources :events
resources :venues
resources :games

get "profiles/:id" => "profiles#show", as: :profile
get "profiles" => "profiles#index"
get "calendar" => 'profiles#calendar'


root 'welcome#index'

get 'about' => 'welcome#about'

get 'contact' => 'welcome#contact'
end


My VenuesController is:

class VenuesController < ApplicationController
before_action :set_venue, only: [:show, :edit, :update, :destroy]
def new
@venue = Venue.new
end

def show
end

def index
@v = Venue.all
end

def edit
end

def create
@venue = Venue.new(venue_params)

respond_to do |format|
if @venue.save
format.html { redirect_to @venue, notice: 'Venue was successfully created.' }
else
format.html { render :new }
end
end
end
end

def update
respond_to do |format|
if @venue.update(venue_params)
format.html { redirect_to @venue, notice: 'Venue was successfully updated.' }
else
format.html { render :edit }
end
end
end

def destroy
@venue.destroy
respond_to do |format|
format.html { redirect_to venues_url, notice: 'Venue was successfully destroyed.' }
end
end

private

def venue_params
params.require(:venue).permit(:name, :address, :phone, :website, :venues_type)
end
def set_venue
@venue = Venue.find(params[:id])
end


My Venue View _form.html.erb:

<%= form_for(@venue) do |f| %>
<% if @venue.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@venue.errors.count, "error") %> prohibited this venue from being saved:</h2>

<ul>
<% @venue.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :address %><br>
<%= f.text_field :address %>
</div>
<div class="field">
<%= f.label :website %><br>
<%= f.text_field :website %>
</div>
<div class="field">
<%= f.label :venues_type %><br>
<%= f.text_field :venues_type %>
</div>
<div class="field">
<%= f.label :phone %><br>
<%= f.text_field :phone, placeholder: "xxx-xxx-xxxx" %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>


And then my stack:

Started PATCH "/venues/1" for ::1 at 2016-10-26 11:49:36 -0400

AbstractController::ActionNotFound - The action 'update' could not be found for VenuesController:
actionpack (5.0.0.1) lib/abstract_controller/base.rb:121:in `process'
actionview (5.0.0.1) lib/action_view/rendering.rb:30:in `process'
actionpack (5.0.0.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (5.0.0.1) lib/action_controller/metal.rb:262:in `dispatch'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:725:in `call'
warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
warden (1.2.6) lib/warden/manager.rb:34:in `catch'
warden (1.2.6) lib/warden/manager.rb:34:in `call'
rack (2.0.1) lib/rack/etag.rb:25:in `call'
rack (2.0.1) lib/rack/conditional_get.rb:38: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.0.1) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.0.1) lib/active_record/migration.rb:552:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) 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.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.3.1) lib/web_console/middleware.rb:131:in `call_app'
web-console (3.3.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.3.1) lib/web_console/middleware.rb:18:in `catch'
web-console (3.3.1) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.0.1) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `block in tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `tagged'
railties (5.0.0.1) 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.0.1) 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.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'
railties (5.0.0.1) lib/rails/engine.rb:522:in `call'
puma (3.6.0) lib/puma/configuration.rb:225:in `call'
puma (3.6.0) lib/puma/server.rb:578:in `handle_request'
puma (3.6.0) lib/puma/server.rb:415:in `process_client'
puma (3.6.0) lib/puma/server.rb:275:in `block in run'
puma (3.6.0) lib/puma/thread_pool.rb:116:in `call'
puma (3.6.0) lib/puma/thread_pool.rb:116:in `block in spawn_thread'

Started POST "/__better_errors/0c664909e8d5ec43/variables" for ::1 at 2016-10-26 11:49:36 -0400


I'm completely stumped -- any ideas/input is much appreciated! Thanks!

Answer

Your Venues controller's create method has an extra end, thus making everything else below it out of the controller. You are actually closing your class after the create method.

So remove one end from the create method definition and you are fine.