例如,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) 有人应该知道什么是使用Rails的入门级,中级和高级开发人员?全面:理论知识,开发工具,宝石等.面试通常会出现什么问题?
基本上,我想做这样的事情(用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中执行此操作?我知道有redo和retry关键字,但它们似乎重新执行"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中是否有内置函数可以在不使用任何循环的情况下读取整个文件?到目前为止,我只遇到了以块(行或字符)读取的方法.
有没有办法比较两个数组并显示它们的共同点?
array1 = ["pig", "dog", "cat"]
array2 = ["dog", "cat", "pig", "horse"]
Run Code Online (Sandbox Code Playgroud)
我键入什么来显示["pig", "dog", "cat"]这两个数组之间的共同点?
我想解析一个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模块,我相信我只能通过索引访问字段.我认为上面的代码会更具可读性.有任何想法吗?
我有一系列哈希:
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的比较失败".这是什么意思?
如果我有一个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脚本将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)
我想知道它是如何格式化的?