脚手架和迁移后的路由错误

时间:2012-04-26 14:44:18

标签: ruby-on-rails-3 routing scaffolding

我创建了一个没有问题的脚手架

  

$ rails generate scaffold新名称:字符串title:string content:text

Rake命令运行迁移(没有像以前那样出现问题,表格正确创建)

  

$ rake db:migrate

修改app / views / home / index.html.erb

  

<%= link_to'我的新闻',:controller => 'news'%>

我在“http:// localhost:3000”中正确看到了主页和链接;单击链接“我的新闻”页面“http:// localhost:3000 / news”加载时没有错误。

现在,点击Rails生成的链接“New New”,链接的目标localhost:3000 / news / new(来源“< a href =”/ news / new“> New New< / a>”) ,我读了这个错误:

  

路由错误

     

没有路线匹配{:action =>“show”,:controller =>“news”,:format => nil}

     

尝试运行rake路线以获取有关可用路线的更多信息。

在“app / views / news / index.html.erb”中,链接源为

  

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

在routes.rb中我读了

  

MyApp :: Application.routes.draw做

     

资源:新闻

     

获取“home / index”

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

耙道:

  

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

     

POST /news(。:format)新闻#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

提前致谢并抱歉我的英文

1 个答案:

答案 0 :(得分:1)

你必须使用news_index_path,因为如果rails无法做出单数的新闻不是单数 - prular区分他们会在末尾添加_index:)

您有一个news和多个news,这很令人困惑。

始终尝试使用<name_of_resource>_path生成网址:)

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

这表示隐含,您使用1部分news_index并添加_path来获取路径。

你应该

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

希望有所帮助,欢呼!