2012-04-26 6 views
0

J'ai créé un échafaudage sans problèmeserreur de routage après échafaudage et migration

$ rails generate scaffold New name:string title:string content:text

commande Rake pour exécuter la migration (aucun problème comme avant, table créé correctement)

$ rake db:migrate

Modifier app/views/Accueil/index.html.erb

<%= link_to 'My News', :controller => 'news' %>

Je vois la maison et le lien correctement "http: // localhost: 3000"; en cliquant sur le lien "Mes nouvelles", la page "http: // localhost: 3000/news" est chargée sans erreur.

maintenant, en cliquant sur le lien "New New" généré par Rails, cible de lien localhost: 3000/nouvelles/nouvelle (source "< a href ="/nouvelles/nouveaux "> New New </a >"), je lis cette erreur:

Routing Error

No route matches {:action=>"show", :controller=>"news", :format=>nil}

Try running rake routes for more information on available routes.

Dans "app/views/nouvelles/index.html.erb" le lien souce est

<%= link_to 'New New', new_news_path %>

En routes.rb je lis

MyApp::Application.routes.draw do

resources :news

get "home/index"

  • Rails 3.2.3
  • Ruby 1.9.3p125
  • MySQL 5.5
  • Windows 7 64 bits

routes Rakes:

news_index GET /news(.:format) news#index

POST /news(.:format) news#create

new_news GET /news/new(.:format) news#new

edit_news GET /news/:id/edit(.:format) news#edit

news GET /news/:id(.:format) news#show

PUT /news/:id(.:format) news#update

DELETE /news/:id(.:format) news#destroy

home_index GET /home/index(.:format) home#index

root / home#index

Merci à l'avance et désolé pour mon anglais

+0

Quelle est la cible du lien généré? Pourriez-vous copier cette ligne à partir de la source générée? – Matzi

+0

Oui, la cible du lien est http: // localhost: 3000/news/new – Noeland

Répondre

1

vous devez utiliser news_index_path parce que nouvelles ne sont pas si singulier rails ne peuvent pas singulariser - prular distinguer, ils ajouteront _index à la fin :)

Vous avez un news et beaucoup news et cela est source de confusion.

toujours essayer d'utiliser <name_of_resource>_path pour générer des urls :)

news_index GET /news(.:format) news#index 

Cela dit implicite, vous utilisez 1 partie news_index et ajoutez _path pour obtenir le chemin pour elle.

Vous devriez avoir

<%= link_to 'My News', news_index_path %> 

espoir qui aide, cheers!

+0

et si vous acceptez cela, notez :) –

+0

Merci, mais j'ai changé ": controller => 'news'" avec "news_index_path" dans "app/views/home/index.html.erb" et j'ai la même erreur en cliquant sur "New New". Dans "app/views/news/index".html.erb "le lien est" <% = link_to 'New New', new_news_path%> " – Noeland

+0

Erreur identique exacte – Noeland