一、首先了解一下Helper方法:
1. helper方法就是方法;2. 它大部分在view中应用,也可以做为普通方法使用在其它场景中;3. 它可以写在controller中,也可以写在app/helper模块中;4. Rails框架提供了一些Helper方法,如:form_for、link_to等等;5. 通过合理的将一些功能应用封闭成Helper方法,可以很大程度上简化代码量和维护成本,并且能完成一些统一性和风格方面的要求。二、Helper方法的定义
1. 写在controller中的场景 写在控制器中的Helper方法,或者打算将控制器中的某个方法开放成Helper方法,以便在视图中使用时,必须使用“helper_method :xxx”写声明;如下面示例:class UsersController < ApplicationController
helper_method :date_fmtdef date_fmt datereturn date.strftime("%Y-%m-%d") end end 2. 写在app/helper模块中的场景 每个控制器都可以有一个对应的Helper模块,它在app/helper目录下,与控制器文件同名。 ./app/helper/users.rbmodule UsersHelper
def date_fmt datereturn date.strftime("%Y-%m-%d") end end 三、Helper方法中视图中的使用Rails中的视图与JSP一样,属于嵌入式程序代码(这也是为什么扩展名为*.erb的意思),即它的内容可以是Html标签与Ruby代码的结合,在视图中可以编写Ruby代码(使用<%%>括起来),也可以编写HTML标签代码。1. 在Rails2.x中有个约定,视图中所使用的Helper方法或Ruby代码,调用过程中包含代码块(do..end之间的代码集合就叫代码块)的, 无论是否有返回值,必须使用<% ... %>。如果不包含代码块并且打算将结果输出到页面的,使用<%= ... %>,这就是我们所看到 的<% form_for %>和<%= link_to %>啦!2. 上述提到的问题在Rails3中得到了统一,那就是只要打算输出到页面,均使用<%= ... %>./app/view/users/index.html.erb<table>
<th><td>序号</td><td>姓名</td><td>部门</td><td>入职时间</td></th><% i =1%><%for user in @user %><tr><td><%= i %><td><td><%= user.name %><td><td><%= user.department.name %><td><td><%= date_fmt(user.in_date) %><td></tr><%end%></table>转载自: