Rails 新手,不明白这些变量哪里来的?

donbe · 2013年05月24日 · 最后由 HalF_taN 回复于 2013年05月24日 · 2199 次阅读

最近尝试用 ruby admin 做一个漂亮点的后台,但是 ruby 语法真折腾人。以下是摘自 config/initilizers/rails_admin.rb 的代码片段

RailsAdmin.config do |config|
....
config.actions do
    # root actions
    dashboard                     # mandatory
    # collection actions 
    index                         # mandatory
    new
    # export
    history_index
    bulk_delete
    # member actions
    show
    edit
    delete
    history_show
    show_in_app
   end
....
end

这个 block 里的 dashboard , index, new 到底是方法还是变量,他们从什么地方变出来的?

我觉得是个方法,如果是个变量感觉完全没有意义..

class Foo
  def self.bar
    puts 'bar'
  end

  def self.actions(&block)
    self.instance_eval(&block)
  end
end

Foo.actions do
  bar
end

原理大概是这样,用 instance_eval 把这个 block 放到另一个环境里面执行,到底他们从什么地方冒出来,得看实现的代码是怎么样。

这个就是自定义语义,想要不明觉厉的话可以叫他 DSL

需要 登录 后方可回复, 如果你还没有账号请 注册新账号