p460
ActionView
默认情况,有默认模板(/app/view/:controller/:action.rhtml)会被调用
也可以调用render来指定模板进行渲染
模板中可以使用的
1.action的实例变量
2.session request response flash等等
3.特殊变量 controller可以返回当前控制器,当然也就可以访问该控制器的public方法
4.特殊变量 base_path 当前模板的根路径
Rails支持3种模板:
1.Builder模板,用来生成xml,外部免费库
2.ERb模板 ,最常用的
3.RJS模板
html_escapte()方法 就是h(),用来替换输入中的html关键字符
<%=后马上写h,养成好习惯
如果碰到允许用户输入html源码的话,用sanitize方法进行清扫,它会清除其中危险代码.
辅助方法
app/helper/:controller_helper.rb中是某控制器的辅助方法模块
内建辅助方法
格式化方法
debug可以用yaml方式输出参数,比如
debug(params)
debug(session)
链接
link_to_if 条件成立,生产链接,否则只有文本
link_to_unless 与link_to_if相反
button_to 生成提交按钮
img_tag("图片地址",:size=>"80X120") #其中图片相对地址默认为public/images目录
mail_to
stylesheet_link_tag "my.css" #链接样式表(默认为public/stylesheets目录)
stylesheet_link_tag :all,:recursive=>true #链接所有样式表,包括子目录
javascript_link_tag #默认从/public/javascripts目录加载
javascript_link_tag :defaults #加载默认的4个js和application.js
分页部分略过
表单
用户提交表单时,
rails开始构造params实例.如果参数名称中有方括号,比如user[name],那么在params中会把键为user的变量构造为一个hash
嵌套构造键为name的值.
比如
id=>1
user[addr][city]='chengdu ' ,其params会被构造为
{:id=>1,:user=>{:addr=>{:city=>"chengdu "}}}
form_for
其中的:user,意味着:
1.view可以使用action的@user变量
2.form提交的action可以使用params[:user]变量
如果<% form_for :user,@custom_user,...do |form| %>
可以使用@custom_user变量和params[:custom_user]