在Ruby的开头:从新手到专业书第13章重点介绍了撰写本文时最受欢迎的框架;当然,Rails突出显示。
用于介绍概念的项目有一个部分,它通过向scaffold添加一个view_all方法来扩展使用rails命令创建的通用应用程序:
def view_all
@Entries = Entry.all(:order => 'created_at DESC')
end
它还指出config / routes.rb文件包含以下内容:
map.resources :entries
并更新为
map.resources :entries, :collection => { :view_all => :get }
问题是我的config / routes.rb文件看起来不完全一样。它没有map.
部分,只是看起来像
resources :entries
无论如何,我添加了:collection...
部分。
然后该书说要将以下内容添加到app / views / entries / view_all.html.erb
<% @entries.each do |entry| %>
<h1><%= entry.title %></h1>
<p><%= entry.content %></p>
<p><em>Posted at <%= entry.created_at %></em></p>
<% end %>
<%= link_to 'Add New entry', new_entry_path %>
我已经完成了所有这些,但是当我尝试运行&#34;应用程序&#34;我收到错误
Couldn't find Entry with id=view_all
参数为
{"collection"=>{"view_all"=>:get},
"id"=>"view_all"}
有没有其他人看过这本书,看到它有点过时并知道如何解决这个问题,或者至少对我做错了什么有一个大致的理解?
答案 0 :(得分:1)
您所指的那本书正在使用旧版本的Rails。
在Rails 2中,语法(如您所示):
map.resources :entries, :collection => { :view_all => :get }
在Rails 3中,语法为:
resources :entries do
get :view_all, on: :collection
end
更新:
管理以获取本书第二版的电子书版本,是的第二版使用Rails 2.3.2。我认为你应该努力为自己找一本新书,因为你正在使用Rails 3(基于有问题的标签)。
为了理解路线,我认为Rails Routing from the Outside In文件非常详细。