我有一些我想分享的控制器方法.在轨道上的红宝石中执行此操作的最佳做法是什么?我应该创建一个我的控制器扩展的抽象类,还是应该创建模块并将其添加到每个控制器?以下是我想要分享的控制器方法:
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
Run Code Online (Sandbox Code Playgroud) 我正在试图弄清楚如何从任何可能包含的引用回复文本中解析出电子邮件的文本.我已经注意到,通常电子邮件客户端会将"在某个日期等等上写下来"或者用尖括号作为前缀.不幸的是,不是每个人都这样做 有没有人知道如何以编程方式检测回复文本?我正在使用C#来编写这个解析器.
如果我想做这样的事情:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Run Code Online (Sandbox Code Playgroud)
我怎么会得到这种效果?我知道我可以在一个大的if语句中将所有内容包装在块中,但是如果可能的话我想避免嵌套.
休息就不会在这里工作,因为我不希望停止其余元素的迭代.
ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
我只是想从某个目录访问一个.rb文件,一个教程告诉我使用这个代码,但我不知道它是如何找到gem文件的.
Ruby(公共,受保护和私有方法)中的方法可见性已经在像这篇博客文章这样的地方得到了很好的解释.但是在Ruby on Rails中,由于框架的设置方式,它似乎与常规Ruby应用程序略有不同.那么,在Rails模型,控制器,帮助器,测试等中,何时/不适合使用受保护或私有方法?
编辑:感谢您的答案到目前为止.我理解Ruby中的protected和private的概念,但我正在寻找更多关于在Rails应用程序的各个部分(模型,控制器,帮助程序,测试)的上下文中使用这些类型的可见性的典型方式的解释.例如,公共控制器方法是操作方法,应用程序控制器中的受保护方法用于需要由多个控制器访问的"辅助方法"等.
我正在使用许多jQuery插件,它经常创建没有id或其他标识属性的DOM元素,并且在Capybara中获取它们的唯一方法(例如用于点击) - 是为了让他们的邻居(其祖先的另一个孩子)首先.但我没有找到任何地方,例如Capybara支持这样的事情:
find('#some_button').parent.fill_in "Name:", :with => name
Run Code Online (Sandbox Code Playgroud)
?
我需要推荐人的路径.我不想要域名.例如,如果引用者是
http://www.google.com/adsense我想要的/adsense.
在jekyll serve一台机器上使用后,即可设置WEBrick服务器,并可从localhost:4000该特定PC上访问该站点.
但是,我想知道如何从局域网中的其他机器访问此Web服务器,尤其是移动设备?在将代码推送到Github之前,我正试图在移动设备上测试jekyll网站.
运行rspec测试时出现以下错误
在rails中60秒(127.0.0.1:7055)无法获得稳定的firefox连接
使用最新的ruby(1.9.2)和firefox(6.0)
使用rspec-rails,capybara和其他几个宝石,但它们似乎不是问题.这些测试在另一个环境(linux)中运行良好.
我在Ubuntu 10.10 32位上安装了gem
apt-get install gem -y
Run Code Online (Sandbox Code Playgroud)
但是当我试着奔跑的时候
gem install something.gem
Run Code Online (Sandbox Code Playgroud)
我收到错误的命令找不到.
bash: gem: command not found
Run Code Online (Sandbox Code Playgroud)
我安装了gem,有什么理由说它找不到命令?
这些文件是由gem包安装的