Tag: ruby

`Post.published.collect(&:views_count)`中的`&:views_count“`

我从这里看到了代码 Post.published.collect(&:views_count) 我想这等于 .collect { |p| p.views_count } 但是我从来没有看到过这个用法,这是否有一个名字? 我在哪里可以find更多关于它的信息?

Rails js.erb文件找不到方法“render”

我有一个Javascript ERB文件中的以下代码: $(document).ready(function() { $("#workout-week").append( <%= escape_javascript(render :partial => "show_training_period", :locals => { :period => @period }) %> ); }); 当我看到了,我得到以下错误: undefined method `render' for #<#<Class:0x00000004e21158>:0x00000005dbfe98> 局部存在,局部variables不为零。 任何想法为什么这可能发生? 堆栈跟踪: app/assets/javascripts/slider.js.erb:2:in `evaluate_source' tilt (1.3.3) lib/tilt/template.rb:209:in `instance_eval' tilt (1.3.3) lib/tilt/template.rb:209:in `evaluate_source' tilt (1.3.3) lib/tilt/template.rb:144:in `cached_evaluate' tilt (1.3.3) lib/tilt/template.rb:127:in `evaluate' tilt (1.3.3) lib/tilt/template.rb:76:in `render' sprockets (2.0.3) lib/sprockets/context.rb:175:in `block […]

无法加载这样的文件 – 脚本/导轨:通过RubyMine进行远程debugging时出现此错误

通过RubyMine IDE进行远程debugging时出现以下错误。 $ bundle exec rdebug-ide –port 1234 — script/rails server Fast Debugger (ruby-debug-ide 0.4.9) listens on :1234 /home/amit/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_load' /home/amit/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_program' /home/amit/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-ide19-0.4.12/bin/rdebug-ide:87:in `<top (required)>' /home/amit/.rvm/gems/ruby-1.9.3-p125/bin/rdebug-ide:19:in `load' /home/amit/.rvm/gems/ruby-1.9.3-p125/bin/rdebug-ide:19:in `<main>' Uncaught exception: cannot load such file — script/rails 我跟着这个链接来安装需要gem进行远程debugging。 这里是远程debugging的Gemfileconfiguration #To Debug gem 'linecache19', '0.5.13', :path => "~/.rvm/gems/ruby-1.9.3-p125/gems/linecache19-0.5.13/" gem 'ruby-debug-base19', '0.11.26', :path => "~/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.26/" gem 'ruby-debug19', […]

为什么不`config.time_zone`似乎做任何事情?

在application.rb ,它说: 将Time.zone默认设置为指定的区域,并使活动logging自动转换为该区域。 运行“耙 – D时间”以查找时区名称的任务列表。 默认是UTC。 但设置config.time_zone = 'Central Time (US & Canada)'或config.time_zone = 'Eastern Time (US & Canada)'没有任何影响 – 模型中的created_at字段仍然以UTC保存。 根据这个railsforum的回答 : config.time_zone只是让轨道知道你的服务器设置为这个时区,所以当它将date写入数据库时​​,它可以正确地将其转换为UTC。 如果这是真的,那么为什么当我的系统时间是Pacific Time (US & Canada)和config.time_zone = 'Central Time (US & Canada)'或config.time_zone = 'Eastern Time (US & Canada)' ,那created_at时间是正确的UTC? 它不应该是不正确的?! 因为,如果PST时间是晚上8点,那么EST是晚上11点,UTC是凌晨4点。 假设Rails做Time.now ,那将是下午8点。 我们告诉Rails服务器在EST。 所以,下午8点会是EST时间,就Rails而言,那么UTC会在UTC时间上午5点,这是不正确的(因为实际时间是PST晚上8点/下午11点,即上午4点UTC) 这里发生了什么?

在Ruby中按名称访问variables

我不完全确定这是否可能在Ruby中,但希望有一个简单的方法来做到这一点。 我想声明一个variables,然后找出variables的名称。 也就是说,对于这个简单的片段: foo = ["goo", "baz"] 我怎样才能得到数组的名称(在这里,“富”)? 如果确实有可能,这是否适用于任何variables(例如,标量,哈希等)? 编辑:这是我基本上试图做的。 我正在写一个SOAP服务器,用三个重要的variables包装一个类,validation代码本质上是这样的: [foo, goo, bar].each { |param| if param.class != Array puts "param_name wasn't an Array. It was a/an #{param.class}" return "Error: param_name wasn't an Array" end } 我的问题是:我可以使用foo,goo或barreplace“param_name”的实例吗? 这些对象都是数组,所以我迄今收到的答案似乎并不奏效(除了重新deviseala dbr的答案 )

用于devise的定制authentication策略

我需要为https://github.com/plataformatec/devise编写自定义身份validation策略,但似乎没有任何文档。 它是如何完成的?

是否有一个原因,我们不能迭代在ruby中的“反向范围”?

我尝试使用一个范围向后迭代, each : (4..0).each do |i| puts i end ==> 4..0 通过0..4迭代写入数字。 在另一个范围r = 4..0似乎是好的, r.first == 4 , r.last == 0 。 我似乎很奇怪,上面的结构没有产生预期的结果。 这是什么原因? 这种行为合理的情况是什么?

如何configurationWEBrick在Rails中使用SSL?

在Rails 3之前,您可以修改脚本/服务器文件来添加SSL参数,并告诉服务器命令使用WEBrick的HTTPS版本。 现在所有这些脚本都没有了,有没有人知道如何让这个工作与Rails 3或4?

使用will_paginate在Ruby中分页数组

我有一个数组@水平1,看起来像这样: [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4], …………] 我想在这个数组上应用分页,这样每个页面一次只显示几行。 我试过这个: @temp1 = @level1.paginate(:page => params[:page]) 但它会引发以下错误: undefined method `paginate' for [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4]]:Array 如何使用will_paginate对此进行分页?

如何获得string中所有出现的Ruby正则expression式的匹配数据?

我需要MatchData在string中出现正则expression式。 这与在正则expression式匹配中所提出的扫描方法不同,因为它只给了我一串string(我需要完整的MatchData来获取开始和结束信息等)。 input = "abc12def34ghijklmno567pqrs" numbers = /\d+/ numbers.match input # #<MatchData "12"> (only the first match) input.scan numbers # ["12", "34", "567"] (all matches, but only the strings) 我怀疑有一些我忽略的方法。 build议?