rails4特性学习

ruby 1.9一些特性
hash key value
key:value
name:'wang'
status: :frozen
:不要与前面有空格
lambda语法
l = ->(arg) { puts arg }
l = lambda{|arg| puts arg}

1 ActiveRecord链式调用,scope

Task.where(status:3).joins(:inquire).offset(3).limit(3).order("tasks.inquire_state desc")

update_all 一个参数,不接受条件

Task.where(status:3).update_all ""
Hash 条件
where(name:'he',age:(1..10)) #范围
where(name:'he',age:[3,6,9]) #子集
Post.where.not(author: author) #非
named_scope -> scope
unscope 删除所有作用域(包括default_scope)

2 coffeescript

缩进敏感的js小兄弟

rails4特性学习_第1张图片
Paste_Image.png

turbolink 一半天使、一半魔鬼
如果你需要手工的排除一些链接,不让Turbolinks帮你处理这些请求,你可以添加data-no-turbolnk属性到链接标签里面。
把js 和 css打包成一个文件,默认链接只更新body部分
$(document).ready每次新进的页面(地址栏回车,跳转)或者 刷新都会执行。
$(document).on "page:change每次 Turbolinks 工作时执行。
简单的说,一般情况下ready 函数一般只执行一次,而 page:change 在每次页面切换时都会执行。
$(document).ready -> alert "我在 Turbolinks 下只执行一次。"
$(document).on "page:change", -> alert "我在 Turbolinks 下每次都执行。"

$ ->
    # 只会执行一次,页面切换不会再执行
   #some thing
#页面切换
$(document).on "page:change", ->        
    #some thing    

http://coffee-script.org/

强烈不建议使用 turbolink,坑太多

3 sass

继承,减少重写样式
rake assets:precompile

4 remote:true

link_to ,form_tag 等
rjs模版引擎
$("#list").html(j render partial: 'xxxxxx')

5 accepts_nested_attributes_for :author, :pages

接受嵌套属性
class Contact
  has_many :icc_phones
  accepts_nested_attributes :icc_phones
end

Contact = Contact.new 

params.require(:contact).permit(:name,:icc_phones_attributes:[:city_code,:phone_no,:_destroy])

= form_for @contact do |f|
  name:
  = f.text_field :name
  = f.fields_for :icc_phones,f.object.icc_phones.first do |ff|
  = f.fields_for :icc_phones,f.object.icc_phones.build do |ff|
    city_code:
    = ff.text_field :city_code
    phone_no
    = ff.text_field :phone_no  
    = ff.check_box :_destroy
rails4特性学习_第2张图片
Paste_Image.png

6 routing

 (get/post)   'profile', to: 'users#show'
 match 'photos', to: 'photos#show', via: [:get, :post]#  via: :all
 root to: "home#index"

7 params

安全
params.require(:person).permit(:name,:age,..)

8 缓存

缓存html片段
俄罗斯套娃缓存 Russian Doll Caching
https://ruby-china.org/topics/21488

9 调试

bye_bug和 web_console
侵入式调试
byebug
c = continue
n = next
step

rails4特性学习_第3张图片
Paste_Image.png

pry 可代替console

你可能感兴趣的:(rails4特性学习)