Erreur de routage dans les rails de l'application mobile de uninitialized constant HomeController'
Im nouveau à l'utilisation de la fondation et j'ai créé des Postes d'application à l'aide d'échafaudage
et j'ai fait comme suit:
rails new blog
ensuite ajoutés à la suite de Gemfile
gem 'foundation-rails'
group :development do
gem 'rails_layout'
end
et puis
$ bundle install
$ rails generate layout:install foundation5 --force
$ rails g scaffold Post title desc:text
$ rake db:migrate
Maintenant app fonctionne très bien @ hôte local port 3000/posts
Mais quand je clique sur le bouton 'Accueil' dans nav-bar elle génère des erreurs:
application.html.erb fichier:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= content_for?(:title) ? yield(:title) : "Found Rails" %></title>
<meta name="description" content="<%= content_for?(:description) ? yield(:description) : "Found Rails" %>">
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%# Modernizr is required for Zurb Foundation %>
<%= javascript_include_tag 'vendor/modernizr' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<header>
<%= render 'layouts/navigation' %>
</header>
<main role="main">
<%= render 'layouts/messages' %>
<%= yield %>
</main>
</body>
</html>
_navigation.html.erb fichier :
<%# navigation styled for Zurb Foundation 5 %>
<nav class="top-bar" data-topbar>
<ul class="title-area">
<li class="name"><%= link_to 'Home', root_path %></li>
<li class="toggle-topbar menu-icon"><a href="#">Menu</a></li>
</ul>
<div class="top-bar-section">
<ul>
<%= render 'layouts/navigation_links' %>
</ul>
</div>
</nav>
Mes itinéraires.rb fichier:
Rails.application.routes.draw do
resources :posts
root :to => "home#index"
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
# root 'welcome#index'
# Example of regular route:
# get 'products/:id' => 'catalog#view'
# Example of named route that can be invoked with purchase_url(id: product.id)
# get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
# Example resource route (maps HTTP verbs to controller actions automatically):
# resources :products
# Example resource route with options:
# resources :products do
# member do
# get 'short'
# post 'toggle'
# end
#
# collection do
# get 'sold'
# end
# end
# Example resource route with sub-resources:
# resources :products do
# resources :comments, :sales
# resource :seller
# end
# Example resource route with more complex sub-resources:
# resources :products do
# resources :comments
# resources :sales do
# get 'recent', on: :collection
# end
# end
# Example resource route with concerns:
# concern :toggleable do
# post 'toggle'
# end
# resources :posts, concerns: :toggleable
# resources :photos, concerns: :toggleable
# Example resource route within a namespace:
# namespace :admin do
# # Directs /admin/products/* to Admin::ProductsController
# # (app/controllers/admin/products_controller.rb)
# resources :products
# end
end
Qu'est-ce que je suis absent?.
Avez-vous un contrôleur HomeController?
pas de ce que devrait être défini ?
Vous êtes l'enracinement de votre '/' url d'un contrôleur HomeController. Exécuter des rails g contrôleur de la maison de l'indice et puis essayez à nouveau.
pas de ce que devrait être défini ?
Vous êtes l'enracinement de votre '/' url d'un contrôleur HomeController. Exécuter des rails g contrôleur de la maison de l'indice et puis essayez à nouveau.
OriginalL'auteur PallavSharma | 2014-05-05
Vous devez vous connecter pour publier un commentaire.
Votre problème est cette ligne ici:
Dans les itinéraires.rb fichier.
Cela indique à votre demande que l'URL de la racine (donc le http://:3000/URL) devrait ressembler à un contrôleur appelé "maison" avec une action "index".
Pour que cela fonctionne, vous devez avoir un contrôleur HomeController.rb dans votre app/controllers dossier et à l'intérieur d'un def pour 'index'.
Je recommande d'exécuter cette commande
Pour générer le contrôleur de la maison. De nombreux tutoriels vous donnera cette ligne à exécution AVANT d'exécuter l'échafaudage de commande.
Bon. Cela signifie que la page que vous voyez est la page d'Accueil par défaut du Contrôleur de la page. Vous avez deux options ici. Option 1: je suggère de suivre le tuto ici: guides.rubyonrails.org/v3.2.13/getting_started.html. Vous avez maintenant fait toutes les étapes jusqu'à 6.2 Ajout d'un Lien. La Section 6.2 va vous montrer comment faire un lien vers une page avec tous les postes.
Option 2: (Non recommandé) Si vous voulez prendre un raccourci, le changement de vos itinéraires.rb fichier pour les éléments suivants: racine : => "posts#index" et l'URL / vous montrera les postes de contrôleur de
merci @dsatch j'ai fait de même et cela a fonctionné, pas besoin de créer la maison de contrôleur.
OriginalL'auteur Dave Satchell
@PallavSharma
, permettez-moi de vous donner quelques informations pour vous aider:Le problème que vous avez, c'est que votre contrôleur (
home
) n'existe pas. Et ne devrait - il être un autre contrôleur avec presque pas d'importance dans le reste de votre application. Si vous voulez une coutumeroot
chemin, nous avons généralement juste laApplicationController
comme ceci:Cela vous permet de définir les options suivantes:
Bien qu'il pourrait être logique, ou même de meilleures pratiques, à utiliser
posts#index
que l'index; il signifie que vous aurez à utiliser les postesindex view
pour votre maison, ainsi queposts/index
. En utilisantapplication#home
, il vous donne beaucoup plus de flexibilité, particulièrement utile dans des applications importantesPas de problème, j'espère que ça aide
OriginalL'auteur Richard Peck