2011-10-23 120 views
0

我找到了一個幫助程序方法,我想用它來調整我網站上嵌入的視頻的大小。我試過用這種方法幾種方法,但收到多個未定義的方法錯誤。這裏的方法:使用rails輔助方法

def resize_video(new_width,new_height) 
    width,height = embed_code.match(/width=.?(\d+).*height=.?(\d+)/).to_a.drop(1) 
    embed_code.gsub(width,new_width).gsub(height,new_height) 
end 

我想這種方法適用於<%= raw link.embed_code %>部分我的看法,可HERE,改變寬度和高度所需的值。我應該在哪裏放置該方法?應該如何調用?

更新

每卡雷爾的建議,我把方法links_helper.rb和視圖中使用<%= raw (link.embed_code).resize_video %>但收到此錯誤undefined method resize_video for #<String:0x492bf40>

回答

1

我建議你把輔助方法放在視圖的相應幫助器中(即如果視圖文件屬於控制器xyz,應該有名稱爲xyz_helper的輔助器)。這是鐵軌慣例。如果在多個控制器視圖中使用助手方法,我們可以將它放在application_helper中。

如果你正在爲embed_code未定義的方法,我們必須傳遞變量如下

<%= raw resize_video(link.embed_code, width, height) %> 
def resize_video(embed_code, new_width, new_height) 
    width,height = embed_code.match(/width=.?(\d+).*height=.?(\d+)/).to_a.drop(1) 
    embed_code.gsub(width,new_width).gsub(height,new_height) 
end 
+0

謝謝,現在我得到#<#<本類'未定義的方法resize_video:0x4a6bfb0>:0x4a69610 >'我嘗試了很多不同的方式,這可能是rails 3.1的問題嗎? – Dru

+0

您可以請在這裏發佈堆棧跟蹤的幾行... – nkm

+0

我還沒有在rails 3.1上工作過,但我不認爲這可能是rails 3.1的問題。大概這可能是因爲助手文件中的代碼破壞或者可能不加載助手。如果link是一個模型實例,那麼你可以把上面的代碼放在一個模型方法中並從視圖中調用它。 – nkm

0

放置在一個文件名video_helper.rb您的輔助方法在helpers文件夾。更多here