首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby on Rails中的控制器之间重用代码的最佳实践

在Ruby on Rails中的控制器之间重用代码的最佳实践
EN

Stack Overflow用户
提问于 2008-09-24 17:16:47
回答 6查看 26.8K关注 0票数 84

我有一些控制器方法想和大家分享。在ruby on rails中做这件事的最佳实践是什么?我应该创建一个控制器扩展的抽象类,还是应该创建模块并将其添加到每个控制器中?下面是我想要分享的控制器方法:

def driving_directions
  @address_to = params[:address_to]
  @address_from = params[:address_from]
  @map_center = params[:map_center_start]

  # if we were not given a center point to start our map on
  # let's create one.
  if !@map_center && @address_to
    @map_center = GeoKit::Geocoders::MultiGeocoder.geocode(@address_to).ll
  elsif !@map_center && @address_from
    @map_center = GeoKit::Geocoders::MultiGeocoder.geocode(@address_from).ll
  end
end

def printer_friendly
  starting_point = params[:starting_point].split(',').collect{|e|e.to_f}
  ne = params[:ne].split(',').collect{|e|e.to_f}
  sw = params[:sw].split(',').collect{|e|e.to_f}
  size = params[:size].split(',').collect{|e|e.to_f}
  address = params[:address]

  @markers = retrieve_points(ne,sw,size,false)
  @map = initialize_map([[sw[0],sw[1]],[ne[0],ne[1]]],[starting_point[0],starting_point[1]],false,@markers,true)
  @address_string = address
end
EN

回答 6

Stack Overflow用户

发布于 2014-05-18 22:21:22

我知道这个问题是6年前提出的。我只想指出,在Rails4中,现在有了控制器关注点,这是一种更开箱即用的解决方案。

票数 33
EN

Stack Overflow用户

发布于 2008-09-24 18:02:27

实际上,我认为模块是在控制器之间共享代码的最佳方式。如果你想在视图之间共享代码,助手是很好的选择。帮助器基本上是美化的模块,所以如果你不需要查看级别的访问,我建议在你的lib文件夹中放置一个模块。

创建模块后,必须使用include语句将其包含在所需的控制器中。

http://www.rubyist.net/~slagell/ruby/modules.html

票数 16
EN

Stack Overflow用户

发布于 2008-09-24 18:44:07

我同意模块化的方法。在lib目录中创建一个单独的Ruby文件,并将模块放入新文件中。

最明显的方法是将这些方法添加到ApplicationController中,但我相信您已经知道这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/128450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档