论坛首页 编程语言技术论坛

Rails Tricks #2

浏览 1430 次
锁定老帖子 主题:Rails Tricks #2
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-18   最后修改:2009-04-18

个人摸索的一点点经验

 

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