在我的一个 ruby on Rails 4 控制器中,我有一个方法可以向视图注入必要的数据。
所需的数据在 html 所需的数据和 javascript 所需的数据之间有所不同。我正在使用gon将数据注入到 js 脚本中。
我的应用程序运行良好,但 gon 在 HTML 中注入了太多数据(仅供参考,在 body 标记下方的脚本中),因为我只需要 HTML 视图所需的 5 个属性中的 Gon/Javascript 2 个。(希望的原因:当我加载很多对象时,HTML 文件的字节差异非常显着)
def inject_deal_steps_data
# Used in html view
@steps = @deal.steps.select(:attribute1,
:attribute2,
:attribute3,
:attribute4,
:attribute5). order(attribute4: :asc)
# Used in js file
gon.push( { deal_steps: @steps } ) if @steps
end
我尝试使用下面的 unscope 等方法,但它不起作用。
def inject_deal_steps_data
# Used in html view
@steps = @deal.steps.select(:attribute1,
:attribute2,
:attribute3,
:attribute4,
:attribute5). order(attribute4: :asc)
# Used in js file
gon.push( { deal_steps: @steps.unscope(:attribute1,:attribute3,:attribute4 } ) if @steps
end
我不想像下面这样创建另一个新选择,因为它会在数据库上创建一个新的请求/命中。
@steps = @deal.steps.select(:attribute1,
:attribute2,
:attribute3,
:attribute4,
:attribute5). order(attribute4: :asc)
gon.push( { deal_steps: @deal.steps.select(:attribute2,:attribute5) } ) if @deal.steps
我想为 GON 重新使用为 HTML 创建的相同 @steps,但从中删除 3 个属性。