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

Rails Tricks #1

    博客分类:
  • RUBY
阅读更多

《Agile Web Develop》这本书里面只是简单介绍了下Rails ,许多东西为什么,以及更多有趣的东西都没有提到。

看别人项目源码后,才觉得Rails 的内容还真不是一般多。而ruby 随意修改内核功能的特性,更导致代码阅读起来额外麻烦。甚至不需要include,直接继承基类后extend就可以在其他地方使用了 - -

 

with_scope  :ActiveRecord::Base   很方便的函数,用在需要不定参数查找时特好用

  class Article < ActiveRecord::Base
    def self.create_with_scope
      with_scope(:find => { :conditions => "blog_id = 1" }, :create => { :blog_id => 1 }) do
        find(1) # => SELECT * from articles WHERE blog_id = 1 AND id = 1
        a = create(1)
        a.blog_id # => 1
      end
    end
  end

 

模板渲染

一般情况下,模板中只有一个<yield>用来填充内容。如果有特殊需要,比如需要额外的css,js 可以添加额外的 <%=yield:name_space %>

然后在需要使用的地方:

<% content_for :name_space do %>
    <!-- code you wanna place here-->
<%end%>

 

过滤私密信息:

经常会发生这种情况,测试的时候用户的登录名,密码都在日志里面一览无余。如果觉得良心不安,使用这个:

filter_parameter_logging :password

这样会将和password 有关的内容过滤掉。

 

调试:

  controller : raise sth

  viewer:      debug sth

  console    : y sth

 

routes 里面 member 和 collection 的区别:

比如  map.resources :days,member =>{:today=>:get}

        map.resources :days,collection =>{:today=>:get}

一开始以为两种方法一样,member生成的路径是 get_day_path(:id) ,而collection生成的是get_days_path

 

关于 form_for :

 一开始对 scaffold 后生成的 form_for 很好奇,因为在 new, edit 里面居然是相同的代码,连路径都没有。

很困惑后,查看源码才知道原因。Rails代码封装的太恐怖了,首先它会判断 form_for 的变量是否是个 new_record?

如果后面没有路径它会根据变量的属性来确定是新建还是修改。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics