I have a simple Ruby on Rails repo, and I found that if I specified the homepage as index in Roues, it would throw a "" error. I can't find any spelling mistakes:
This is Route
Rails.application.routes.draw do
resources :foos
root "foos#index"
end
This is the part of the Controller
class FoosController < ApplicationController
before_action :find_foo, only: [:edit, :update, :destroy]
def index
@foos = Foo.all
end
My View file is app/views/index.html.erb
This is logs:
ActionController::MissingExactTemplate (FoosController#index is missing a template for request formats: text/html):
actionpack (7.0.2.2) lib/action_controller/metal/implicit_render.rb:45:in default_render' actionpack (7.0.2.2) lib/action_controller/metal/basic_implicit_render.rb:6:in
block in send_action'
actionpack (7.0.2.2) lib/action_controller/metal/basic_implicit_render.rb:6:in tap' actionpack (7.0.2.2) lib/action_controller/metal/basic_implicit_render.rb:6:in
send_action'
actionpack (7.0.2.2) lib/abstract_controller/base.rb:214:in process_action' actionpack (7.0.2.2) lib/action_controller/metal/rendering.rb:53:in
process_action'
actionpack (7.0.2.2) lib/abstract_controller/callbacks.rb:234:in block in process_action' activesupport (7.0.2.2) lib/active_support/callbacks.rb:118:in
block in run_callbacks'
actiontext (7.0.2.2) lib/action_text/rendering.rb:20:in with_renderer' actiontext (7.0.2.2) lib/action_text/engine.rb:69:in
block (4 levels) in class:Engine'
activesupport (7.0.2.2) lib/active_support/callbacks.rb:127:in instance_exec' activesupport (7.0.2.2) lib/active_support/callbacks.rb:127:in
block in run_callbacks'
activesupport (7.0.2.2) lib/active_support/callbacks.rb:138:in run_callbacks' actionpack (7.0.2.2) lib/abstract_controller/callbacks.rb:233:in
process_action'
actionpack (7.0.2.2) lib/action_controller/metal/rescue.rb:22:in process_action' actionpack (7.0.2.2) lib/action_controller/metal/instrumentation.rb:67:in
block in process_action'
activesupport (7.0.2.2) lib/active_support/notifications.rb:206:in block in instrument' activesupport (7.0.2.2) lib/active_support/notifications/instrumenter.rb:24:in
instrument'
activesupport (7.0.2.2) lib/active_support/notifications.rb:206:in instrument' actionpack (7.0.2.2) lib/action_controller/metal/instrumentation.rb:66:in
process_action'
actionpack (7.0.2.2) lib/action_controller/metal/params_wrapper.rb:259:in process_action' activerecord (7.0.2.2) lib/active_record/railties/controller_runtime.rb:27:in
process_action'
actionpack (7.0.2.2) lib/abstract_controller/base.rb:151:in process' actionview (7.0.2.2) lib/action_view/rendering.rb:39:in
process'
actionpack (7.0.2.2) lib/action_controller/metal.rb:188:in dispatch' actionpack (7.0.2.2) lib/action_controller/metal.rb:251:in
dispatch'
actionpack (7.0.2.2) lib/action_dispatch/routing/route_set.rb:49:in dispatch' actionpack (7.0.2.2) lib/action_dispatch/routing/route_set.rb:32:in
serve'
actionpack (7.0.2.2) lib/action_dispatch/journey/router.rb:50:in block in serve' actionpack (7.0.2.2) lib/action_dispatch/journey/router.rb:32:in
each'
actionpack (7.0.2.2) lib/action_dispatch/journey/router.rb:32:in serve' actionpack (7.0.2.2) lib/action_dispatch/routing/route_set.rb:850:in
call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in call' rack (2.2.3) lib/rack/etag.rb:27:in
call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in call' rack (2.2.3) lib/rack/head.rb:12:in
call'
actionpack (7.0.2.2) lib/action_dispatch/http/permissions_policy.rb:22:in call' actionpack (7.0.2.2) lib/action_dispatch/http/content_security_policy.rb:18:in
call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in context' rack (2.2.3) lib/rack/session/abstract/id.rb:260:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/cookies.rb:693:in call' activerecord (7.0.2.2) lib/active_record/migration.rb:603:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/callbacks.rb:27:in block in call' activesupport (7.0.2.2) lib/active_support/callbacks.rb:99:in
run_callbacks'
actionpack (7.0.2.2) lib/action_dispatch/middleware/callbacks.rb:26:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/executor.rb:14:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:28:in
call'
web-console (4.2.0) lib/web_console/middleware.rb:132:in call_app' web-console (4.2.0) lib/web_console/middleware.rb:28:in
block in call'
web-console (4.2.0) lib/web_console/middleware.rb:17:in catch' web-console (4.2.0) lib/web_console/middleware.rb:17:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/show_exceptions.rb:26:in call' railties (7.0.2.2) lib/rails/rack/logger.rb:36:in
call_app'
railties (7.0.2.2) lib/rails/rack/logger.rb:25:in block in call' activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:99:in
block in tagged'
activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:37:in tagged' activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:99:in
tagged'
railties (7.0.2.2) lib/rails/rack/logger.rb:25:in call' sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/remote_ip.rb:93:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/request_id.rb:26:in
call'
rack (2.2.3) lib/rack/method_override.rb:24:in call' rack (2.2.3) lib/rack/runtime.rb:22:in
call'
activesupport (7.0.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/server_timing.rb:20:in
call'
actionpack (7.0.2.2) lib/action_dispatch/middleware/executor.rb:14:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/static.rb:23:in
call'
rack (2.2.3) lib/rack/sendfile.rb:110:in call' actionpack (7.0.2.2) lib/action_dispatch/middleware/host_authorization.rb:137:in
call'
railties (7.0.2.2) lib/rails/engine.rb:530:in call' puma (5.6.2) lib/puma/configuration.rb:252:in
call'
puma (5.6.2) lib/puma/request.rb:77:in block in handle_request' puma (5.6.2) lib/puma/thread_pool.rb:340:in
with_force_shutdown'
puma (5.6.2) lib/puma/request.rb:76:in handle_request' puma (5.6.2) lib/puma/server.rb:441:in
process_client'
puma (5.6.2) lib/puma/thread_pool.rb:147:in `block in spawn_thread'
What am I missing?
CodePudding user response:
My View file is app/views/index.html.erb
This is the issue. Your view file should be present at app/views/foos/index.html.erb
Rails will automatically render a view that matches the name of the controller and action. Convention Over Configuration! Views are located in the app/views directory. So the index action will render app/views/foos/index.html.erb
by default.
You can read more on this official Rails page.