`
xhanxhanxhan
  • 浏览: 211330 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Rails Tricks #2

    博客分类:
  • RUBY
阅读更多

个人摸索的一点点经验

 

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一些方法,通常有这几种方法

  1. 写到config / initialize 下
  2. 写到 lib 下, 然后在enviroment 里面包含该文件
  3. 新建一个 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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics