所以,首先,你应该运行它们。他们会列出他们创建的文件,并可以查看它们。
第一个创建一个名为home
(用于响应Web请求的代码)的控制器,其中一个操作名为index
。一个动作是ant HTTP动词和一个与控制器中的方法相对应的URL(在本例中为GET /home/index
)的组合。生成器还会创建一个用于呈现该动作的虚拟视图,以及一些空的测试和帮助程序文件。你可以看到,它打印的内容:
create app/controllers/home_controller.rb
route get "home/index"
invoke erb
create app/views/home
create app/views/home/index.html.erb
invoke test_unit
create test/functional/home_controller_test.rb
invoke helper
create app/helpers/home_helper.rb
invoke test_unit
create test/unit/helpers/home_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/home.js.coffee
invoke scss
create app/assets/stylesheets/home.css.scss
特别有用的是控制器:
class HomeController < ApplicationController
def index
end
end
你还没有给Rails的你想要的行动做什么的任何信息(你刚才说的, “通过一些名为'index'的操作创建一个名为'home'的控制器),所以您需要填写该方法。你可以通过调用rake routes
看到URL信息:
home_index GET /home/index(.:format) home#index
换句话说,当你发送一个GET请求到/home/index
它调用HomeController#index
。由于该方法为空,并且不告诉Rails渲染的内容,因此它将默认呈现app/views/home/index.html.erb
的视图,该视图也是由generator生成的,并且期望您执行一些有趣的操作。
第二台发电机做了很多。它创建一个资源,这意味着你存储在数据库中的一个模型,以及一个具有简单的CRUD动作和虚拟视图的控制器来操作该模型。因此,除了上面的控制器/视图之外,它还创建了一个升级脚本,用于在DB中创建正确的表以及将用作模型的Ruby类。看看尤其是在两个率先“创造”在这里的项目,并在编辑器中加载起来:
invoke active_record
create db/migrate/20130111151206_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/unit/post_test.rb
create test/fixtures/posts.yml
invoke resource_route
route resources :posts
invoke scaffold_controller
create app/controllers/posts_controller.rb
invoke erb
create app/views/posts
create app/views/posts/index.html.erb
create app/views/posts/edit.html.erb
create app/views/posts/show.html.erb
create app/views/posts/new.html.erb
create app/views/posts/_form.html.erb
invoke test_unit
create test/functional/posts_controller_test.rb
invoke helper
create app/helpers/posts_helper.rb
invoke test_unit
create test/unit/helpers/posts_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/posts.js.coffee
invoke scss
create app/assets/stylesheets/posts.css.scss
invoke scss
create app/assets/stylesheets/scaffolds.css.scss
您可以再次运行rake routes
看到所有你其实可以做的动作,:
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
最后,查看app/controllers/PostsController.rb
的控制器代码,看看这些操作实际上做了什么(它们更有趣)。
做什么。和..意思是:格式? – OneZero
它指定可以是(html,js,json,...)的请求的格式将在'.'后面的路由中指定,因此对'/ home/index.json'的请求将调用索引操作以'json'作为格式。当您构建可呈现不同响应的API时,这非常有用。 – Khaled