在演示者对象中使用 gazay/gon
use gazay/gon in presenter object
我正在使用 Presenter 对象使一些复杂的数据可用于我的视图。我需要的部分数据打算由 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'
,
我发现的第一种方法是将 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
这行得通,但我必须承认,我不太喜欢在使用演示者的每个控制器中传递变量。
我正在使用 Presenter 对象使一些复杂的数据可用于我的视图。我需要的部分数据打算由 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'
,
我发现的第一种方法是将 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
这行得通,但我必须承认,我不太喜欢在使用演示者的每个控制器中传递变量。