使用rails helper方法

时间:2011-10-23 15:28:25

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我找到了一个帮助方法,我希望用它来调整我网站上嵌入的视频的大小。我尝试过几种方法使用这种方法,但收到了多个未定义的方法错误。这是方法:

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,将宽度和高度更改为所需的值。我应该在哪里放置方法以及如何调用它?

更新

根据Karel的建议,我将方法放在links_helper.rb中并​​在视图中使用了<%= raw (link.embed_code).resize_video %>,但收到此错误undefined method resize_video for #<String:0x492bf40>

2 个答案:

答案 0 :(得分:1)

我建议你把helper方法放在视图的相应帮助器中(即如果视图文件属于控制器xyz,那么应该有一个名为xyz_helper的帮助器)。这是rails惯例。如果在多个控制器视图中使用了辅助方法,我们可以将它放在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

答案 1 :(得分:0)

将帮助程序方法放在video_helper.rb文件夹中的文件名helpers中。更多here