小编pdu*_*uey的帖子

路由使用Dash`-`而不是Ruby on Rails中的Underscore`_`

我希望我的网址使用破折号-而不是下划线_作为单词分隔符.例如,controller/my-action而不是controller/my_action.

我对两件事感到惊讶:

  1. 谷歌等人.继续区分他们.
  2. Ruby on Rails没有一个简单的全局配置参数来映射-_路由.或者是吗?

我将使用的最佳解决方案:as或命名路线.

我的想法是修改Rails路由以检查该全局配置并在分派到控制器操作之前更改-_.

有没有更好的办法?

routing ruby-on-rails rails-routing

81
推荐指数
2
解决办法
1万
查看次数

在 Ruby 中,在 class << self 中定义的方法中,为什么不能在没有 self 的情况下访问超类上定义的常量?

我试图更好地理解 Ruby 单例和类继承。我到处都读到

def self.method_name; end`
Run Code Online (Sandbox Code Playgroud)

相当于

class << self
  def method_name; end
end
Run Code Online (Sandbox Code Playgroud)

但如果那是真的,那么我希望print_constant_fails能工作,但事实并非如此。这里发生了什么?

class SuperExample
  A_CONSTANT = "super example constant"
end

class SubExample < SuperExample
  def self.print_constant_works_1
    puts A_CONSTANT
  end
  class << self
    def print_constant_works_2
      puts self::A_CONSTANT
    end
    def print_constant_fails
      puts A_CONSTANT
    end
  end
end
Run Code Online (Sandbox Code Playgroud)
pry(main)> SubExample.print_constant_works_1
super example constant

pry(main)> SubExample.print_constant_works_2
super example constant

pry(main)> SubExample.print_constant_fails
NameError: uninitialized constant #<Class:SubExample>::A_CONSTANT
from (pry):13:in `print_constant_fails'
Run Code Online (Sandbox Code Playgroud)

ruby

13
推荐指数
1
解决办法
297
查看次数

为什么Rails 3与Mysql2 Gem ActiveRecord :: Base.connection.execute(sql)返回数组而不是哈希?

我正在将应用程序升级到Rails 3.我决定使用mysql2 gem.应用程序中有一些遗留代码可以调用:

results = ActiveRecord::Base.connection.execute(sql)
Run Code Online (Sandbox Code Playgroud)

在2.3.x版本中,它使用了

results.each_hash do |row|
...
Run Code Online (Sandbox Code Playgroud)

但是使用gem mysql2,结果是类型Mysql2::Result,它只有一个each方法.检查文档并指定结果应该是键入字段名称的哈希值.大!

但事实上,它是一个Array,而不是一个Hash.

当我使用rails控制台并实例化我自己的Mysql2::Client并在那里运行查询时,结果一个Hash,这就是我想要的.

在rails应用程序中,我认为最好使用ActiveRecord::Base.connection它,因为它已经使用database.yml中的选项进行了实例化.

注意,遗憾的是结果没有映射到模型,所以我不能使用它.

我现在所做的是,例如:

result = ActiveRecord::Base.connection.execute(sql)
field_index = result.fields.index("field")
result.each do |row|
  row[field_index]
end
Run Code Online (Sandbox Code Playgroud)

哪个是罪恶的丑陋.

有没有人如何让它返回哈希而不是数组?

gem mysql2 ruby-on-rails-3

12
推荐指数
3
解决办法
1万
查看次数