我司前端大神,想了解rails页面相关的东西,顾有笔记如下。
-
添加路由
rails将一个请求(localhost:4000/projects),通过route对应到相应的controller(ProjectsController)下的一个action(index)方法下。
而路由的文件在config/routes.rb
resources :products, only: [:index] do # .... end
注意应resource一般应为复数
添加完后,可以在命令行内执行rake routes
会列出所有的路由。 -
生成controller
rails有很多很好用的generator,可以生成相应的文件。我们可以使用generator生成controller。比如在console内执行
rails g controller projects
会生成# 并不是所有文件都需要,选择添加到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的测试文件,并不需要加入git内。rails的哲学是 convenient over configuration,既通过一些默认的设置,而达到开发的便利。比如一些文件的摆放和命名。
比如ProductsController的index action默认对应views/projects/index.html.erb。
这样做带来了开发上的便利,但也提升了理解的难度。
-
将变量“传”到view
一般情况下,在controller,会通过方法,在后台拿到数据,并赋值给某个实例变量,这样,在view内,就能使用对应的变量。eg:
def index @projects = Project.all end
有些实例变量可能是在before_action里设置的
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设置好实例变量后,就可以在对应的view里使用了。