标签: ruby

Rails:部分人员应该知道实例变量吗?

例如,Ryan Bates的nifty_scaffolding就是这样做的

edit.html.erb

<%= render :partial => 'form' %>
Run Code Online (Sandbox Code Playgroud)

new.html.erb

<%= render :partial => 'form' %>
Run Code Online (Sandbox Code Playgroud)

_form.html.erb

<%= form_for @some_object_defined_in_action %>
Run Code Online (Sandbox Code Playgroud)

隐藏的状态让我感到不舒服,所以我通常喜欢这样做

edit.html.erb

<%= render :partial => 'form', :locals => { :object => @my_object } %>
Run Code Online (Sandbox Code Playgroud)

_form.html.erb

<%= form_for object %>
Run Code Online (Sandbox Code Playgroud)

那么哪个更好:a)有部分访问实例变量b)传递部分所需的所有变量?

我一直在选择b)最近,但我确实遇到了一点点泡菜:

some_action.html.erb

<% @dad.sons.each do |a_son| %>
<%= render :partial => 'partial', :locals => { :son => a_son } %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

_partial.html.erb

The son's name is <%= son.name %>
The dad's name is …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails actionview partial

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

Ruby和Rails开发人员应该知道什么?

有人应该知道什么是使用Rails的入门级,中级和高级开发人员?全面:理论知识,开发工具,宝石等.面试通常会出现什么问题?

ruby ruby-on-rails

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

Ruby:捕获异常后继续循环

基本上,我想做这样的事情(用Python或类似的命令式语言):

for i in xrange(1, 5):
    try:
        do_something_that_might_raise_exceptions(i)
    except:
        continue    # continue the loop at i = i + 1
Run Code Online (Sandbox Code Playgroud)

我如何在Ruby中执行此操作?我知道有redoretry关键字,但它们似乎重新执行"try"块,而不是继续循环:

for i in 1..5
    begin
        do_something_that_might_raise_exceptions(i)
    rescue
        retry    # do_something_* again, with same i
    end
end
Run Code Online (Sandbox Code Playgroud)

ruby loops exception-handling

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

如何在Ruby中读取整个文件?

Ruby中是否有内置函数可以在不使用任何循环的情况下读取整个文件?到目前为止,我只遇到了以块(行或字符)读取的方法.

ruby file

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

找到两个数组的共同点

有没有办法比较两个数组并显示它们的共同点?

array1 = ["pig", "dog", "cat"]
array2 = ["dog", "cat", "pig", "horse"]
Run Code Online (Sandbox Code Playgroud)

我键入什么来显示["pig", "dog", "cat"]这两个数组之间的共同点?

ruby

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

使用标题字段解析CSV文件作为每行的属性

我想解析一个CSV文件,以便将每一行视为一个对象,其中header-row是对象中属性的名称.我可以写这个,但我确定它已经在那里了.

这是我的CSV输入:

"foo","bar","baz"
1,2,3
"blah",7,"blam"
4,5,6
Run Code Online (Sandbox Code Playgroud)

代码看起来像这样:

CSV.open('my_file.csv','r') do |csv_obj|
  puts csv_obj.foo   #prints 1 the 1st time, "blah" 2nd time, etc
  puts csv.bar       #prints 2 the first time, 7 the 2nd time, etc
end
Run Code Online (Sandbox Code Playgroud)

使用Ruby的CSV模块,我相信我只能通过索引访问字段.我认为上面的代码会更具可读性.有任何想法吗?

ruby csv parsing

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

Ruby按多个值排序?

我有一系列哈希:

a=[{ 'foo'=>0,'bar'=>1 },
   { 'foo'=>0,'bar'=>2 },
   ... ]
Run Code Online (Sandbox Code Playgroud)

我想先按每个哈希的'foo'排序数组,然后按'bar'排序.谷歌告诉我这就是它的完成方式:

a.sort_by {|h| [ h['foo'],h['bar'] ]}
Run Code Online (Sandbox Code Playgroud)

但是这给了我ArgumentError"Array与Array的比较失败".这是什么意思?

ruby

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

将浮点数舍入为ruby中最接近的整数

如果我有一个49.967的浮点数并且我做.to_i它会将它砍成49,这对我使用磁盘空间分析.967超过900mb的空间不会在显示器中占用.

是否有一个函数将数字舍入到最接近的整数,或者我必须像我这样定义它自己:

class Float
  def to_nearest_i
    (self+0.5).to_i
  end
end
Run Code Online (Sandbox Code Playgroud)

这样我就可以这样做:

>> 5.44.to_nearest_i
=> 5
>> 5.54.to_nearest_i
=> 6
Run Code Online (Sandbox Code Playgroud)

ruby

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

在Ruby中解析制表符分隔文件的最佳方法是什么?

在Ruby中解析制表符分隔文件的最佳(最有效)方法是什么?

ruby tsv

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

将纪元时间以毫秒转换为日期时间

我使用ruby脚本将iso时间戳转换为epoch,我正在解析的文件具有以下时间戳结构:

2009-03-08T00:27:31.807
Run Code Online (Sandbox Code Playgroud)

因为我想保持毫秒,我使用遵循ruby代码将其转换为纪元时间:

irb(main):010:0> DateTime.parse('2009-03-08T00:27:31.807').strftime("%Q")
=> "1236472051807"
Run Code Online (Sandbox Code Playgroud)

但在python我试过以下:

import time 
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))
Run Code Online (Sandbox Code Playgroud)

但我没有得到原来的时间日期时间,

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))
'41152-03-29 02:50:07'
>>> 
Run Code Online (Sandbox Code Playgroud)

我想知道它是如何格式化的?

ruby python datetime epoch

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