试图创建Rails"应用程序"在Ruby的开头:从新手到专业书,但坚持一点

时间:2013-08-29 23:20:52

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

在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"}

有没有其他人看过这本书,看到它有点过时并知道如何解决这个问题,或者至少对我做错了什么有一个大致的理解?

1 个答案:

答案 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文件非常详细。