小编Nic*_*ick的帖子

在Rails中将毫秒转换为格式化日期

我确定这应该很简单(可能缺少明显的东西),但是......我有一个毫秒的数据库字符串,我希望在Rails中转换为美国格式的日期..to_date想打电话会是我的朋友,但这会引发一个奇怪的错误.

article.date => "1379844601000"

article.date.to_date
NoMethodError: undefined method `div' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议正确的方法吗?

datetime ruby-on-rails

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

Ransack导出结果为CSV

我正在尝试将Ransack(Railscast)结果列表导出为CSV文件(Railcast).但是,它会持续导出所有对象,而不是Ransack搜索返回的结果.谁能告诉我哪里出错了?

在Reports控制器中,我尝试传递@bookings和@ search.result:

  def index
    @search = current_user.bookings.search(params[:q])
    @bookings = @search.result
    @search.build_condition
    respond_to do |format|
      format.html 
      format.csv { render text: Booking.to_csv(@bookings) }\
    end
  end
Run Code Online (Sandbox Code Playgroud)

然后是Booking to_csv方法:

  def self.to_csv list
    CSV.generate do |csv|
      csv << column_names
      list.each do |booking|
        csv << booking.attributes.values_at(*column_names)
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

然而,每次,我都会得到未经过滤的current_user.bookings列表.为什么?

ruby-on-rails ransack

5
推荐指数
1
解决办法
2812
查看次数

PG :: GROUP BY子句中的错误

我想不出更好的方法来重构下面的代码(看到这个问题),虽然我知道它非常难看.但是,它会抛出一个Postgres错误(不是SQLite):

ActiveRecord::StatementInvalid: 
PG::Error: ERROR:  
column "articles.id" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)

查询本身是:

SELECT "articles".* 
FROM "articles" 
WHERE "articles"."user_id" = 1 
GROUP BY publication
Run Code Online (Sandbox Code Playgroud)

哪个来自以下视图代码:

=@user.articles.group(:publication).map do |p|
  =p.publication
  =@user.articles.where("publication = ?", p.publication).sum(:twitter_count)
  =@user.articles.where("publication = ?", p.publication).sum(:facebook_count)
  =@user.articles.where("publication = ?", p.publication).sum(:linkedin_count)
Run Code Online (Sandbox Code Playgroud)

在SQLite中,这给出了输出(例如)NYT 12 18 14 BBC 45 46 47 CNN 75 54 78,这正是我所需要的.

如何改进代码以消除此错误?

postgresql ruby-on-rails

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

Cloudflare Worker TypeError:一次性使用的主体

我正在尝试使用Cloudflare Worker将 POST 请求代理到另一台服务器。

它抛出了一个 JS 异常——通过包含在一个 try/catch 博客中,我已经确定错误是:

TypeError: A request with a one-time-use body (it was initialized from a stream, not a buffer) encountered a redirect requiring the body to be retransmitted. To avoid this error in the future, construct this request from a buffer-like body initializer.

我原以为这可以通过简单地复制 Response 来解决,以便它不被使用,如下所示:

return new Response(response.body, { headers: response.headers })

这是行不通的。我在这里缺少流式传输与缓冲的什么?

addEventListener('fetch', event => {

  var url = new URL(event.request.url);

  if (url.pathname.startsWith('/blog') || url.pathname === '/blog') {
    if (reqType …
Run Code Online (Sandbox Code Playgroud)

javascript fetch-api cloudflare-workers

3
推荐指数
1
解决办法
1010
查看次数

Rails 4:未定义的方法`where'for Array:

我的理解是Rails 4(使用4.2.5)支持在数组上使用.where()运算符.

但是,下面代码的第3行(其中作者属于User且有许多出版物)抛出NoMethodError: undefined method 'where' for #<Array:0x007fd8be73e850>.

@authors = current_user.authors
@pubs = @authors.map(&:publications).flatten.uniq
@scoped = @pubs.where(name: "Publication")
Run Code Online (Sandbox Code Playgroud)

我最初认为它可能.flatten属于部分,但删除它没有任何区别.任何人都能解释一下吗?

ruby arrays activerecord ruby-on-rails

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