Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 困惑于';与';和';没有';方法名称修改_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails 困惑于';与';和';没有';方法名称修改

Ruby on rails 困惑于';与';和';没有';方法名称修改,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,我不知道如何表达这个问题,因为我不太明白这里发生了什么 看看Rails2.x的这个老gem(Rails版本并不重要)。该插件扩展了Rails路由,并执行了许多类似的代码 module Route def self.included(base) [ :add_route, :significant_keys].each { |method| base.alias_method_chain method, :subdomains } end def significant_keys_wit

我不知道如何表达这个问题,因为我不太明白这里发生了什么

看看Rails2.x的这个老gem(Rails版本并不重要)。该插件扩展了Rails路由,并执行了许多类似的代码

module Route
def self.included(base)
    [ :add_route, :significant_keys].each { |method| base.alias_method_chain method, :subdomains }
end

def significant_keys_with_subdomains
    significant_keys_without_subdomains.tap do |result|
      if conditions[:subdomains].is_a? Symbol
        result << conditions[:subdomains]
        result.uniq!
      end
    end
  end

 ...
ActionController::Routing::Route.send :include, SubdomainRoutes::Routing::Route
模块路由
def自带(基本)
[:add_route,:有效的_键]。每个{method|base.alias_method_chain method,:subdomains}
结束
def有效_键_与_子域
有意义的_键_不带_子域。点击do |结果|
如果条件[:子域]。是否为?象征
结果在包含的钩子中,创建别名


仅供参考:

您可能看到调用
alias\u method\u chain
的结果。下面是它的工作原理:

alias_method_chain :some_awesome_method, :super_powers
基本上为方法
some-awesome\u-method
创建了一个新的定义,并将您的旧方法别名为
some-awesome\u-method\u,而不使用超级权限
。新方法
some\u awesome\u method
只调用了
some\u awesome\u方法,并具有超能力
(因此您需要定义它)。但是你总是有一些没有超级能力的方法,它指向你原来的
一些方法
之前的
别名方法链


这里有一个指向更多信息的链接:

很明显,我没有准备好alias\u method\u chain的文档。谢谢你的快速回答。