我司前端大神殷费,想了解rails頁(yè)面相關(guān)的東西勇婴,顧有筆記如下蒙幻。
-
添加路由
rails將一個(gè)請(qǐng)求(localhost:4000/projects),通過(guò)route對(duì)應(yīng)到相應(yīng)的controller(ProjectsController)下的一個(gè)action(index)方法下衣迷。
而路由的文件在config/routes.rb
resources :products, only: [:index] do # .... end
注意應(yīng)resource一般應(yīng)為復(fù)數(shù)
添加完后畏鼓,可以在命令行內(nèi)執(zhí)行rake routes
會(huì)列出所有的路由。 -
生成controller
rails有很多很好用的generator壶谒,可以生成相應(yīng)的文件云矫。我們可以使用generator生成controller。比如在console內(nèi)執(zhí)行
rails g controller projects
會(huì)生成# 并不是所有文件都需要汗菜,選擇添加到git app/assets/javascripts/projects.coffee app/assets/stylesheets/projects.scss app/views/projects/ app/controllers/projects_controller.rb app/helpers/projects_helper.rb test/controllers/projects_controller_test.rb
并不是所有文件都需要让禀,比如
projects_controller_test.rb
為controller的測(cè)試文件贵少,并不需要加入git內(nèi)。rails的哲學(xué)是 convenient over configuration堆缘,既通過(guò)一些默認(rèn)的設(shè)置,而達(dá)到開(kāi)發(fā)的便利普碎。比如一些文件的擺放和命名吼肥。
比如ProductsController的index action默認(rèn)對(duì)應(yīng)views/projects/index.html.erb。
這樣做帶來(lái)了開(kāi)發(fā)上的便利麻车,但也提升了理解的難度缀皱。
-
將變量“傳”到view
一般情況下,在controller动猬,會(huì)通過(guò)方法啤斗,在后臺(tái)拿到數(shù)據(jù),并賦值給某個(gè)實(shí)例變量赁咙,這樣钮莲,在view內(nèi),就能使用對(duì)應(yīng)的變量彼水。eg:
def index @projects = Project.all end
有些實(shí)例變量可能是在before_action里設(shè)置的
class ProjectsController < ApplicationController before_action :set_service_type, only: [:show] def show end private def set_service_type @service_type = ServiceType.find params[:service_type_id] end end
controller設(shè)置好實(shí)例變量后崔拥,就可以在對(duì)應(yīng)的view里使用了。