Rails5 View Document
更新: 2017/09/11 修正了部分模板处传递参数的写法(locals: {sample: @value}
表单视图助手 form |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
没有动作方法(action method)的话直接呼出模版文件 需要设定route(相当于不需要controller) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
分类 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
具体视图助手 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
form_tag 生成通用表格 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
form_for 生成对象的特定表格 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
生成<input>, <textarea>元素 |
● f.类型的 省略掉obj ● _tag类型的 另外查
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML5专用元素 不对应html5的生成 text_field |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
选择框/列表框 |
select(obj, prop, choices [,opts [,html_opts]])
● 例: select @allQusetionnaire, :question, ['first', 'second', 'third'], {include_blank: 'test', disabled: ['first'], selected: 'second'}, {multiple: true, size: 50}
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
集合框 使用数据库数据 collection box |
collection_select(obj, prop, collection, value, text [,opt [,html_opts]])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
选择框/列表框/集合框 选项组块化 |
grouped_collection_select(obj, prop, collection, group, group_label, option_key, option_value [,opts [,html_opts]])
● 参数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
select_tag | select_tag(prop, [opt_tags [,opts]])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
options_for_select |
options_for_select(container [,selected]) ● 参数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
option_from_collection_for_select |
option_from_collection_for_select(collection, value, text [,selected] ● 相当于 collection_select(obj, prop, collection, value, text [,opt [,html_opts]]) ● 参数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
option_groups_from_collection_for_select |
option_groups_from_collection_for_select(collection,
group, group_label, option_key, option_value [,selected]) ● 参数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
选择时刻 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datetime_select date_select time_select |
xxxx.select(obj, prop [,opts
[,html_opts]])
datetime_select @allQusetionnaire, :question |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
select_datetime select_date select_time select_year select_month select_day select_hour select_minute select_second |
select_xxxx(date [,opts [,html_opts]]) 和上面的差不多 date指定默认值,不可指定默认选项 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
其他表格视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
标签 <label></label> |
label(obj, prop, [,content] [,opts],
&block)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
f.submit |
f.submit([value [,opts]]) 提交所在form框架下的一切更新 ● 例 form.submit 'update', {disabled: true, data: {confirm: 'ok?', disable_with: '...'}} ● 参数
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
form_for下编辑不同模型 | fileds_for(var) do |f| ... end var: 模块对象 form_for内部用 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
field_set_tag 整合多个表单 |
field _set_tag([legend [,opts]) do ... end
生成<fieldset><legend>(field的标题) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
加工类视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
自动转换换行 加<p> |
simple_format(text [,html_opts
[,opts]])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
剪裁字符串 | truncate(text [,opts])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
截取字符串片段 | excerpt(text, phrase [,option])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
表格和列表隔n行换色 | cycle(value [,...] [,name:cname]) 一般用在each代码块下 例style="background-color:<%= cycle'red', '#FFff99'%>;
其他颜色相关
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
高亮文字 | highlight(text, phrase [,highlighter:
replaced])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
代码块内进行输出 | <% = ... %>输出最后一个数据 <% ... %>中想要输出的话 <% concat ... ... concat ... %> 尽量少用 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
html字符转义 | 把危险字符转化成安全字符 < <<br> >> & &
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
字符串中除去要素 | sanitize(html [,opts])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
字符串修整 不是视图助手,是Ruby语法 |
sprintf(format, obj [,...])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数值处理 number_xxxxx |
P150~152 # TODO:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
转换时间格式 t.strftime(format) 国际化用l方法 10.4 |
t.to_s()默认格式 t.strftime(format)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
链接类视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
生成超链接 |
link_to(body, url [,html_opt]) html_opt有多个的话套上{}
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
生成链接地址 | url_for(opts) opts:哈希表形式的地址指定选项
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
条件型链接 | link_to_if(condition, name [,url
[,html_opt]], &block) link_to_unless(condition, name [,url [,html_opt]], &block) 条件不成立时候输出纯文本
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
特殊的条件型链接 | link_to_unless_current(name [, url
[,html_opt]], &block) 链接地址是当前页面时只显示文本,否则显示超链接 用于菜单(menu) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
生成邮箱链接 | mail_to(address [, name [, opt]])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
外部资源类视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
别称 | Asset助手(Asset Helper) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
暂略 | javascript_include_tag,
stylesheet_link_sheet 9 session |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
图象要素 | image_tag(src [,opts])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
音频视频要素 | audio_tag(src [,opts]) video_tag(src [,opts])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
自动发现域 | auto_discovery_link_tag ??? p164 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
设置网页图标(favicon) | favicon_link_tag([src [,opt]])
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
获取外部资源的路径 | stylesheet_path(src) audio_path(src) video_path(src) image_path(src) 也有_url,path返回相对路径,url返回绝对路径 位置: /app/assets/.../ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
其他视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
展现数据 debug用 |
debug(obj) 或者inspect方法 obj: 输出的对象(object) 用来查看model的对象是否成功传递等 debug(@test) @test.inspect |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
capture | @var = capture do ...template... end
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
不含内容的标签 | tag(name [,opts [,open = false [, escape -
true]]]) 一般不用,略p170 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
含内容的标签 | content_tag(name [, content] [,opts [,escape
= true]], &block)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
自定义视图助手 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
位置 | /app/helper/xxxx_helper.rb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rails4以前的注意 | 默认读取所有xxxx_helper.rb 取消方法 /config/application.rb 增加一行 config.action_controller.include_all_helper = false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
检验是否有block | block_given? ? capture(&block) : body | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
面向全体的helper | /app/helper/application_help.rb | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
共同造型-layout | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
位置 | /app/views/layouts/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命名规则 | 自带application.html.erb 没有自定义的默认用这个 视图控制器.html.erb |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
适用规则 | 文件放在/app/views/layouts/内部
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
模板向layout传递变量 |
向外部传递变量 provide
# app/views/sample.html.erb <% provide 'sample', "test" %> # app/views/layouts/application.html.erb <%= yield(:sample) | 'nothing exist' %> 模板处 <% provide :title, '😂😳😂' %> layout处 <title><%= yield(:title).presence || 'Railbook' %></title> |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
同时运用多个内容 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
layout嵌套 |
● layout文件放在/app/views/layouts/内部 ● 视图控制器的需要的方法(action)处 # app/controllers/...rb def 方法名 ... render layout: 子layout end
# app/views/layouts/application.html.erb ... <%= content_for?(:sample) ? yield(:sample) : yield > ... ● 子layout: # app/views/layouts/child.html.erb <% content_for :... do %> ... <%= yield %> ... <% end %> <%= render template: 'layouts/application' %>
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
部分模板(partial template) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
位置 | /app/views/内任意,但是推荐如下
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命名规则 | 开头要有_ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
呼出方法 | render url render partial: url
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
呼出时候传递变量 |
主模板处呼出 render partial: url, locals: { var: val [, ...] } #或 render url, var: var, ...
部分模板(partial template)处接收: val = 代替的量if val.blank? 注意: ● 传递参数只能用在呼出部分模板(_开头的文件) ● 主模板直接获取controller的值 ● 用locals: {} 必须要带partial |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
部分模板里面加layout | 直接加里面 p194
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
用于数组 | 加上conllection标签 render partial: '..', collection: '...', locals: {...} 例 render partial: 'sample', conllection: @tests, locals: { ... }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
逻辑方法 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
判定 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||