小编Jam*_*sen的帖子

在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
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

81
推荐指数
3
解决办法
3万
查看次数

76
推荐指数
4
解决办法
9万
查看次数

如何在rake任务中使用"gets"?

每当我尝试在rake任务中使用函数时,我都会收到错误.有没有办法让它发挥作用?

错误说,"没有这样的文件或目录 - (rake任务名称)"

ruby rake ruby-on-rails

73
推荐指数
1
解决办法
7025
查看次数

如何在Ruby中替换重音拉丁字符?

我有一个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文字放在我的代码中.实际的正则表达式看起来会更加丑陋.

ruby unicode activerecord ruby-on-rails utf-8

70
推荐指数
7
解决办法
4万
查看次数

如何强制ActiveRecord重新加载一个类?

我正在创建一系列迁移,其中一些是标准的"创建表"或"修改表"迁移,其中一些迁移修改数据.我正在使用我的实际ActiveRecord模型来修改数据,a:

Blog.all.each do |blog|
  update_some_blog_attributes_to_match_new_schema
end
Run Code Online (Sandbox Code Playgroud)

问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并且无法保存到新表.有没有办法重新加载类及其属性定义,以便我可以重用它们?

ruby migration activerecord ruby-on-rails

59
推荐指数
2
解决办法
2万
查看次数

如何在OSX上安装LaTeX .sty文件?

我有一个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,虽然到目前为止给出了答案,但我可能会尝试另一个发行版.

macos latex

58
推荐指数
3
解决办法
9万
查看次数

如何在LaTeX列表中隐藏项目符号?

在语义上,我想要一个逐项列表,但在视觉上我只想要一些空间.我怎么能隐藏子弹?

latex

53
推荐指数
6
解决办法
8万
查看次数

为什么Ruby没有真正的StringBuffer或StringIO?

我最近阅读了一篇关于在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有点生疏.

ruby string io buffer

52
推荐指数
4
解决办法
3万
查看次数

如何使用git-svn保持svn:external最新?

将我的存储库视为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做?

svn git version-control dvcs

52
推荐指数
3
解决办法
3万
查看次数

emberjs - 如何使用路由器基础设施标记活动菜单项

我正在尝试创建导航标签(取自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属性的正确位置?

ember.js ember-old-router

51
推荐指数
5
解决办法
2万
查看次数