2012-07-22 30 views
0

還挺新的Rails。Rails如何美化這個區塊

你將如何簡化,美化這個方法:

def find_index 
    index = 0 
    @ipn.each {|p| 
     index = 4 if p = "new" #this is just a dummy line 
    } 
    index 
end 

正如你可以看到,它的醜陋。我如何刪除頂部的索引定義和底部的索引以返回 - Ruby方式?

回答

4

我想你想要這個方法: http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-find_index

def find_index 
    @ipn.find_index{|p| p == "new" } 
end 

我也改變了變量名「@ipn」到「@ipns」,因爲它似乎是一個枚舉。

而且爲了避免混淆,我可能會重命名方法「find_ipn_index」,所以它看起來是這樣的:

def find_ipn_index 
    @ipns.find_index{|p| p == "new" } 
end 

或者,如果self.ipns是可用的,不定義一個新的方法在所有爲此,請撥打:

self.ipns.find_index{|p| p == "new" } 
+0

謝謝安德魯。是的,我知道你要去哪裏。但是,如果我只是想在塊內分配一個變量並返回該變量呢?像這樣:http://blakesmith.me/2010/08/16/the-rails-returning-statement.html但沒有返回的方法。 – bymannan 2012-07-22 20:12:38

+0

請問另一個問題,或編輯你的問題,如果這真的是你想知道的,而不是如何美化上面的塊。否則,您要求我在評論中提供答案,這是很難做到的,沒有代碼片段或大多數格式。 – 2012-07-22 20:27:16

+0

如果你想在塊外使用它,那麼一個塊中分配的變量必須在塊外定義,所以你將無法擺脫'index ='的東西。如果您只想返回該值,則不需要分配它,只需要由該塊返回即可,這就是返回有用的原因。 – 2012-07-22 20:37:01