标签: ruby

在模型中使用帮助器:如何包含辅助依赖项?

我正在编写一个处理来自文本区域的用户输入的模型.根据http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input的建议,我在使用before_validate保存到数据库之前清理模型中的输入打回来.

我模型的相关部分如下所示:

include ActionView::Helpers::SanitizeHelper

class Post < ActiveRecord::Base {
  before_validation :clean_input

  ...

  protected

  def clean_input
    self.input = sanitize(self.input, :tags => %w(b i u))
  end
end
Run Code Online (Sandbox Code Playgroud)

不用说,这不起作用.当我尝试保存新帖子时出现以下错误.

undefined method `white_list_sanitizer' for #<Class:0xdeadbeef>
Run Code Online (Sandbox Code Playgroud)

显然,SanitizeHelper创建了一个HTML :: WhiteListSanitizer的实例,但是当我将它混合到我的模型中时,它找不到HTML :: WhiteListSanitizer.为什么?我该怎么做才能解决这个问题?

ruby activerecord model ruby-on-rails

96
推荐指数
6
解决办法
9万
查看次数

在Ruby中阻止评论

Ruby有阻止评论吗?

如果没有,是否有一种有效的方法插入#TextMate中突出显示的代码块之前?

ruby comments keyboard-shortcuts text-editor

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

"!"的目的是什么?和"?" 在方法名称的末尾?

有时我看到Ruby中的方法有"?" 和"!" 在他们的最后,例如:

name = "sample_string"
name.reverse
name.reverse!
name.is_binary_data?
Run Code Online (Sandbox Code Playgroud)

我想知道他们的目的是什么?它们只是语法糖衣吗?

ruby syntax

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

bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby

我是Ruby的新手,并试图围绕以下概念:Bundler vs RVM vs gems vs RubyGems vs gemsets vs system rub我很困惑.

有人可以描述一个"最佳实践",说明如何在全新安装最新版本的Ubuntu时管理所有这些内容吗?我应该安装什么,以及如何使用它?

我猜sudo apt-get install ruby不会推荐做一个,但我不确定.除了"所有其他Ruby东西"之外,我在我的系统上尝试过它.这只会增加我的困惑.我不是在谈论Rails,而只是常规的Ruby宝石(例如Vagrant,Chef,脚本).

ruby gem rubygems bundler rvm

96
推荐指数
1
解决办法
1万
查看次数

返回Ruby正则表达式的第一场比赛

我正在寻找一种在Ruby中对字符串执行正则表达式匹配的方法,并在第一次匹配时使其短路.

我正在处理的字符串很长,看起来标准方式(match方法)会处理整个事物,收集每个匹配,并返回包含所有匹配项的MatchData对象.

match = string.match(/regex/)[0].to_s
Run Code Online (Sandbox Code Playgroud)

ruby regex string

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

Ruby:将负数改为正数?

用红宝石将负数改为正数的最简单方法是什么?

即.将"-300"更改为"300"

ruby math numbers

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

在文件中添加新行?

我想在插入字符串后添加一个新行.

我当前的代码如下所示:

  File.open(filename, 'a') do |file|
    file.write @string
  end
Run Code Online (Sandbox Code Playgroud)

插入字符串后如何添加新行?

ruby

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

如何让rspec-2提供与测试失败相关的完整跟踪?

现在,如果我使用我的测试套件rake spec我得到一个错误:

1) SegmentsController GET 'index' should work
   Failure/Error: get 'index'
   undefined method `locale' for #
   # ./spec/controllers/segments_controller_spec.rb:14:
      in `block (3 levels) in '

这是正常的,因为我有一个错误:)

问题是跟踪不是很有帮助.我知道它突破了segments_controller_spec.rb,第14行,但这只是我称之为测试的地方:

### segments_controller_spec.rb:14
get 'index'
Run Code Online (Sandbox Code Playgroud)

我更喜欢实际的断行和完整的跟踪,而不是spec文件夹中的部分.

跑步--trace并没有帮助.

ruby testing rspec rspec2 ruby-on-rails-3

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

将逗号转换为整数

有没有任何简洁的方法将"1,112"转换为整数1112而不是1?

我有一个,但不是很整洁:

"1,112".split(',').join.to_i #=> 1112
Run Code Online (Sandbox Code Playgroud)

ruby integer data-conversion

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

Ruby/Rails - 更改时间的时区,而不更改值

foo在数据库中有一个记录:start_time:timezone属性.

例如,:start_time是UTC时间2001-01-01 14:20:00.这:timezone是一个字符串 - America/New_York例如.

我想创建一个新的Time对象,其值为,:start_time但其时区由其指定:timezone.我不想加载:start_time然后转换为:timezone,因为Rails会很聪明并且从UTC更新时间以与该时区保持一致.

目前,

t = foo.start_time
=> 2000-01-01 14:20:00 UTC
t.zone
=> "UTC"
t.in_time_zone("America/New_York")
=> Sat, 01 Jan 2000 09:20:00 EST -05:00
Run Code Online (Sandbox Code Playgroud)

相反,我想看到

=> Sat, 01 Jan 2000 14:20:00 EST -05:00
Run Code Online (Sandbox Code Playgroud)

即.我想要做:

t
=> 2000-01-01 14:20:00 UTC
t.zone = "America/New_York"
=> "America/New_York"
t
=> 2000-01-01 14:20:00 EST
Run Code Online (Sandbox Code Playgroud)

ruby time timezone datetime ruby-on-rails

95
推荐指数
5
解决办法
6万
查看次数