0

我正在使用演示者对象来为我的视图提供一些复杂的数据。我需要的部分数据旨在由 javascript 呈现,为此我想使用gon gem将数据共享给浏览器。

这是我的(现在很简单),app/presenters/similarity_presenter.rb对象:

class SimilarityPresenter
  attr_reader :similarities
  def initialize(similarities)
    @similarities = similarities
    gon.histories = @similarities.each { |s| [s.id, s.data(10)] }
  end
end

当我运行我的操作时:

  def index
    period = Period.default
    @similarity_presenter = SimilarityPresenter.new Similarity.all
  end

我得到一个undefined local variable or method 'gon'

4

1 回答 1

0

我发现的第一种方法是将 gon 变量传递给演示者:

  def index
    period = Period.default
    @similarity_presenter = SimilarityPresenter.new gon, Similarity.all
  end

在演示者中:

class SimilarityPresenter
  attr_reader :similarities
  def initialize(gon, similarities)
    @similarities = similarities
    gon.histories = @similarities.each do |s|
      [s.id, s.data(10)]
    end
  end
end

这行得通,但我必须承认,我不太喜欢在我使用演示器的每个控制器中传递变量。

于 2016-01-05T17:15:47.450 回答