所以,首先,你应该运行它们。他们将列出他们创建的文件,您可以查看它们。
第一个创建了一个名为home
(用于响应 Web 请求的一段代码)的控制器,其中包含一个名为index
. 动作是 ant HTTP 动词和/home/index
对应于控制器中方法的 URL(在本例中为 GET )的组合。生成器还创建了一个用于呈现该操作的虚拟视图,以及一些空的测试和帮助文件。您可以在打印的内容中看到:
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 提供有关您希望该操作做什么的任何信息(您刚刚说过,“创建一个名为 'home' 的控制器和一些称为 'index' 的操作”),因此由您来填写该方法。您可以通过调用查看 URL 信息rake routes
:
home_index GET /home/index(.:format) home#index
换句话说,当您向/home/index
它发送 GET 请求时,会调用HomeController#index
. 由于该方法是空的并且不告诉 Rails 要渲染什么,它会默认渲染视图 at app/views/home/index.html.erb
,生成器也创建了该视图,并希望您做一些有趣的事情。
第二个生成器做得更多。它创建了一个资源,这意味着您存储在数据库中的模型以及具有简单 CRUD 操作和虚拟视图来操作该模型的控制器。因此,除了上面的控制器/视图之外,它还创建了一个升级脚本以在数据库中创建正确的表和一个用作模型的 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
以了解这些操作的实际作用(它们更有趣一些)。