rails---视图

视图在 Rails 中 , 就是 .html.erb 文件 .
每个视图都要由 controller 触发 . 所有的视图文件 , 都放在 :app/views/ 目录下 . 例如 : app/views/books/new.html.erb

最基本用法
最简单的 erb 文件 :

<p> 当前时间是 : <%= Time.now %></p>

它会直接被转换成下面的 HTML:

<p> 当前时间是 : <%= Time.now %></p>

<% %> 与 <%= %> 的区别
<% %> 表示仅运行代码 , 例如 : <% a = 1%>
<%= %> 表示 , 不但运行 , 而且把结果渲染到
html 中 . 例如 : <%= Time.now %>

Rails 中的视图在什么时候被渲染
Rails 架构: M - V - C (几乎是所有经典 web
项目的架构) . 其中 :
Model: 操作数据库。
Controller: 把每个 "http request" 分发
到对应的 "Action( method)" 来处理
View: 显示 HTML 页面。

例如:
1. 小王同学在浏览器端,输入了一个网址 :http://server.com/fruits/new ,回车。( 这会产生一个 "http request" , 请求方式是GET)

2."http request" 从浏览器,发送到服务器端(server.com) 之后,Rails 就会 把这个请求交给 router 来处理。

3.router 根据配置文件: config/routes.rb中的配置:

​Rails.application.routes.draw do
resources :fruits # 根据这个路由配置
end

​

把这个 request ,分发到:
中的 new action.
fruits controller

4.new action 做一些 处理, 显示对应的 erb .
# 下面是 app/controllers/fruits_controller.rb 的内容 :

class FruitsController < ApplicationController
def new
@hello = 'hellow, Rails!'

# 啥也不写,就直接渲染对应的 erb 页面 :

# app/views/fruits/new.html.erb
end
end

5. 然后 , 上面的 new action 执行完 , 会自动渲
染 new.html.erb 这个文件 ( 文件路径 :

app/views/books/new.html.erb )
<% [1,2,3].each do e %>
<%= e %> <br/>
<% end %>


上面的视图文件会被渲染成 :

1 <br/> 2<br/> 3<br/>

恰当的使用 @ 变量
实例变量 (@name  )定义在 controller 中 , 在 view 中被调用 .

Partial ( 片段 )
有时候,如果某个 erb 文件, 过于复杂了。 例如:
20 行。
或者, 某些代码可以重用。
我们就用Partial 来简化我们的代码 , 提取出公共部分

不带参数的 partial
例如 , 原来的 HTML 是 :
<!-- 下面这段是版权声明,多个页面都需要重用 -->
<footer>
copyright@2016 xx.co.ltd
</footer>

那么就把它写成一个
全名是 :
partial ( 片段)
app/views/fruits/_footer.html.erb( 注意,文件名以 "_" 开头 )
● 然后,我们就可以在对应的
● <%= render :partial => 'footer' %>
erb 文件中:
注意 : 上面的调用中 , 直接使用了
'footer', 而不是 '_footer.html.erb' . 这也是 Rails 的惯例 .

带参数的 partial
如果,某个 partial , 是需要参数的,(例如: 年份是个
变量)
<!-- 下面这段是版权声明,多个页面都需要重用 -->
<footer>
copyright@ <%= year %>xx.co.ltd
</footer>
那么,在调用时,就:
<%= render :partial => 'footer', :locals => {:year =>2016} %>
可以看到 , 使用了
locals 来传递参数 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值