我有一些我想分享的控制器方法.在轨道上的红宝石中执行此操作的最佳做法是什么?我应该创建一个我的控制器扩展的抽象类,还是应该创建模块并将其添加到每个控制器?以下是我想要分享的控制器方法:
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) 每当我尝试在rake任务中使用函数时,我都会收到错误.有没有办法让它发挥作用?
错误说,"没有这样的文件或目录 - (rake任务名称)"
我有一个ActiveRecord模型,Foo有一个name字段.我希望用户能够按名称搜索,但我希望搜索忽略大小写和任何重音.因此,我还存储了一个canonical_name要搜索的字段:
class Foo
validates_presence_of :name
before_validate :set_canonical_name
private
def set_canonical_name
self.canonical_name ||= canonicalize(self.name) if self.name
end
def canonicalize(x)
x.downcase. # something here
end
end
Run Code Online (Sandbox Code Playgroud)
我需要填写"这里的东西"来替换重音字符.还有什么比这更好的了
x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
Run Code Online (Sandbox Code Playgroud)
而且,就此而言,由于我不在Ruby 1.9上,我不能将这些Unicode文字放在我的代码中.实际的正则表达式看起来会更加丑陋.
我正在创建一系列迁移,其中一些是标准的"创建表"或"修改表"迁移,其中一些迁移修改数据.我正在使用我的实际ActiveRecord模型来修改数据,a:
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Run Code Online (Sandbox Code Playgroud)
问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并且无法保存到新表.有没有办法重新加载类及其属性定义,以便我可以重用它们?
我有一个LaTeX项目:
tex/
- documents/
- some_file.tex
- support/
- todonotes.sty
Run Code Online (Sandbox Code Playgroud)
其中some_file.tex使用todonotes:
\usepackage[colorinlistoftodos,textwidth=0.9\marginparwidth]{todonotes}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在TextMate中构建PDF时,我得到"LaTeX Error:File`todonotes.sty'not found".如何告诉LaTex或TextMate我的.sty文件?
后来
具体来说,我正在使用tetexMacPorts,虽然到目前为止给出了答案,但我可能会尝试另一个发行版.
我最近阅读了一篇关于在Ruby中使用的好文章StringIO.但是,作者没有提到的是,这StringIO只是一个"我".没有"O".你不能这样做,例如:
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
Run Code Online (Sandbox Code Playgroud)
Ruby确实需要一个像Java一样的StringBuffer.StringBuffers有两个重要目的.首先,它们让您测试Ruby的StringIO所做的输出的一半.其次,它们对于从小部件构建长弦很有用 - Joel一次又一次地提醒我们的是非常慢的东西.
有替代品吗?
Ruby中的字符串确实是可变的,但这并不意味着我们应该始终依赖于该功能.如果stuff很大,例如,它的性能和内存要求非常糟糕.
result = stuff.map(&:to_s).join(' ')
Run Code Online (Sandbox Code Playgroud)
在Java中执行此操作的"正确"方法是:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
Run Code Online (Sandbox Code Playgroud)
虽然我的Java有点生疏.
将我的存储库视为SVN存储库,我得到:
svn co http://myrepo/foo/trunk foo
...
foo/
bar/
baz/ -> http://myrepo/baz/trunk
Run Code Online (Sandbox Code Playgroud)
把它作为Git回购处理,我得到:
git svn clone http://myrepo/foo --trunk=trunk --branches=branches --tags=tags
...
foo/
bar/
Run Code Online (Sandbox Code Playgroud)
我可以将baz克隆到其他地方的本地机器并添加一个符号链接,但这只是一个黑客攻击.有没有办法git svn rebase在更新其他所有内容时自动提取这些更改,就像这样svn up做?
我正在尝试创建导航标签(取自Twitter Bootstrap):
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Profile</a></li>
<li><a href="#">Messages</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
活动选项卡标有class="active".
http://jsfiddle.net/schawaska/pfbva/上有静态导航栏和路由器/插座功能的很好的例子,但我无法理解如何创建动态导航栏/菜单/选项卡视图.
据我了解,可以在每个菜单项中使用类绑定:
classNameBindings: ['isActive:active']
Run Code Online (Sandbox Code Playgroud)
但是在哪里切换isActive属性的正确位置?