所以,首先,你應該運行它們。他們會列出他們創建的文件,並可以查看它們。
第一個創建一個名爲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