rails中的网页模板

rails中的网页模板
      rails 中的模板都放在app/views/layouts/下。模板后缀是rhtml和erb都可以,但以erb为先,如果已有一个erb后缀的模板,则不再找rhtml。
      模板留给子页显示的地方用yield来标识,如<%= yield %>,这样子也内容都会在这个位置显示。
      rails自动是按名称来套的。比如如果模板名字叫application.erb,那rails默认把它当作全局模板,站内所有页面都会套用这个模板。
      如果把名字命名成controller的名字,如controller say,如果命名成say,则默认controller say下的所有页面都会应用这个模板。如果定义的模板名称既不是application,又不是controller名称,怎么让某一页面套用这个模板 呢?在controller中定义可以实现。比如模板页叫speak.erb,而想让controller say下所有页是套用,则在say的controller类内声明下:
layout ’speak’
这样rails会在layouts目录寻找这个文件。
如果想用代码控制根据条件使用不同的模板,则可以定义一个方法(名称随意):
def GetLayOut
          if XX return ’say’ else return ’speak’ end
end
然后把类内的声明换成这个方法的名字(注意加冒号):
layout :GetLayout
注意这个不带引号,说明不是字符串了。


如果针对某个action使用特定的模板,则可以在action内声明。比如有个action是/say/langEN,想试用speak,而say下其他页则可能不用,则在action langEN下定义如下:
render:layout => ’speak’
这样就可以使这个action套用speak模板了。
render:layout=>也可以指定方法来使用模板,不过要注意在=>要跟冒号,然后再跟方法名。
注意:layout 和render:layout=>是两个专有命令,前者在class内声明,后者在action内声明,不可混用。


总结下:


全局模板:名称固定:application
controller模板:名称固定,同controller名称。
自定义模板(名字同controller不同),包括4种定义方法:
3.1. 在controller中定义:
         3.1.1. layout ‘模板名’(注意中间没冒号,模板名两边有引号,表示文件名)
         3.1.2 layout :方法名(注意中间有冒号,方法名两边没引号,标识方法)
3.2 在 action中定义:
          3.2.1. render:layout=> ‘模板名’(注意中间没冒号,模板名两边有引号,表示文件名)
         3.2.2 render:layout=>:方法名(注意中间有冒号,方法名两边没引号,标识方法)
这样细分起来可以算作六种方法可实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值