标签: ruby

我可以使用默认值在Ruby中创建数组吗?

Perl对默认值非常好:

: jmglov@laurana; perl -e '@foo; printf "%d\n", $foo[123]'
0
: jmglov@laurana; perl -e '%foo; printf "%d\n", $foo{bar}'
0
Run Code Online (Sandbox Code Playgroud)

Ruby可以做同样的事情,至少对于哈希来说:

>> foo = Hash.new(0)
=> {}
>> foo[:bar]
=> 0
Run Code Online (Sandbox Code Playgroud)

但是这些似乎对数组不起作用:

>> foo = Array.new(0)
=> []
>> foo[123]
=> nil
>> foo[124] = 0
=> 0
>> foo[456] = 0
=> 0
>> foo[455,456]
=> [nil, 0]
Run Code Online (Sandbox Code Playgroud)

是否可以为数组提供默认值,因此当它们自动扩展时,它们会被填充为0而不是nil?

当然,我可以解决这个问题,但要付出代价:

>> foo[457,458] = 890, 321
=> [890, 321]
>> foo[456] += 789
NoMethodError: You have a nil object when you …
Run Code Online (Sandbox Code Playgroud)

ruby arrays

33
推荐指数
3
解决办法
4万
查看次数

检查给定的字符串是否为URL

在我的rails应用程序中,我需要验证用户提供的URL是否真的是一个URL.我只关心HTTP协议(也许是HTTPS,我根本没有考虑过这一点),这让我相信在rails中可能已经存在一些可以为我工作的东西.

如果不是:你能推荐一个正则表达式字符串吗?我在google搜索后发现了一些,但根据用户评论他们似乎都有一两个问题.

谢谢

ruby regex ruby-on-rails

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

是否有一种干净的方法可以避免在嵌套的params哈希中调用nil上的方法?

我有兴趣获取params哈希的嵌套'name'参数.打电话给像

params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)

当params [:subject]为空时抛出错误.为了避免这个错误,我通常写这样的东西:

if params[:subject] && params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)

有没有更清洁的方法来实现这一点?

ruby null ruby-on-rails hashmap

33
推荐指数
4
解决办法
6320
查看次数

插件和Ruby宝石之间的区别?

插件和宝石有什么区别?每种用途有何不同?您在哪里以及为何使用其中一个?

ruby gem plugins ruby-on-rails

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

DateTime.now还是Time.now?

我应该在Rails应用程序中使用哪两个:

DateTime.now or Time.now
Run Code Online (Sandbox Code Playgroud)

在申请中使用两者有什么危害吗?

在上述(now)示例的情况下,两者之间是否会有任何差异?(在我目前的系统中,他们都显示相同的时间)

ruby time timezone ruby-on-rails

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

退格键和箭头键在Windows机器上的IRB(Git Bash控制台)中不起作用

我刚刚在Windows机器上安装了ruby 1.9.2,Backspace或任何其他箭头键都不起作用.只有当我在Git Bash控制台上打开IRB时才会发生这种情况.但它在Windows控制台上运行良好.对此有何帮助?

注意:IRB在早期版本的ruby的两个控制台上运行良好.

ruby irb git-bash

33
推荐指数
5
解决办法
1万
查看次数

在Ruby中,如何判断字符串是否不在数组中?

在Ruby中,如果字符串不在选项数组中,我将如何返回true?

# pseudo code
do_this if current_subdomain not_in ["www", "blog", "foo", "bar"]
Run Code Online (Sandbox Code Playgroud)

...或者你知道一个更好的方法吗?

ruby arrays

33
推荐指数
2
解决办法
5万
查看次数

Ruby中的字符串是否可变?

字符串在Ruby中是否可变?根据文件

str = "hello"
str = str + " world"
Run Code Online (Sandbox Code Playgroud)

使用值创建一个新的字符串对象,"hello world"但是当我们这样做时

str = "hello"
str << " world"
Run Code Online (Sandbox Code Playgroud)

它没有提到它创建了一个新对象,它是否会改变str对象,现在它将具有值"hello world"

ruby string mutable immutability

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

33
推荐指数
4
解决办法
3万
查看次数

处理命名空间中的命名空间模型(类)

我正在使用Ruby on Rails 3,我想在命名空间中处理模型(类)命名空间.也就是说,如果我有一个名为NS1的名称空间和名为NS2的名称空间的"子名称空间" ,我想在NS2中处理模型(类).

如果我运行脚手架

rails generate scaffold ns1/ns2/Article id:integer title:string
Run Code Online (Sandbox Code Playgroud)

它将生成以下模型文件:

models/ns1/ns2/article.rb file
models/ns1/articles.rb
Run Code Online (Sandbox Code Playgroud)

models/ns1/articles.rb包含:

module Ns1::Articles
  def self.table_name_prefix
    'ns1_articles_'
  end
end
Run Code Online (Sandbox Code Playgroud)

什么是models/ns1/articles.rb文件?我如何以及为何使用它?您对使用它有什么建议吗?

而且,一般来说,使用Ruby on Rails在命名空间中处理"组合"类的"最佳"方法是什么?

ruby namespaces ruby-on-rails class ruby-on-rails-3

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