个人摸索的一点点经验
Layout
如果想让页面对不同的响应返回不同的模板,比如ajax请求,普通get
可以这样写:
class TopicsController < ApplicationController
layout :set_layout
#... ...
private
def set_layout
if request.xhr?
false
else
"application"
end
end
end
FORM 表单
同表单中有多个model时候,可以用
fields_for @model_name ,block
这样在后台抓数据就不用一个个抓了,
params[:model_name] 就可以了
form_for 还有个不错的参数 form_for [:prefix,@model]
这样生成的URL会有个前缀,可以节约不少代码了~~
Rails Hook
如果要HOOK一些方法,通常有这几种方法
- 写到config / initialize 下
- 写到 lib 下, 然后在enviroment 里面包含该文件
- 新建一个 plugin ,写在 plugin / lib 下 ,然后在 init.rb 里面包含该文件
Mass assign
相互嵌套的模型可以使用这个。Rails 2.3 已經不能使用這個。
而可以通過Nested Object Form 實現
class User < ActiveRecord::Base
validates_presence_of :login
has_many :phone_numbers, :accessible => true
end
class PhoneNumber < ActiveRecord::Base
validates_presence_of :area_code, :number
belongs_to :user
end
a = User.create( {
:login => 'xhan',
:phone_numbers => [
{ :area_code => '919', :number => '123-4567' },
{ :area_code => '920', :number => '123-8901' }
]
})
a.phone_numbers.count # => 2