在我们的rails 3.2.12应用程序中,存在这样的情况:返回两个变量(存储具有相同数据结构的表的子集)并且需要组合以在索引视图中呈现。我们以@ project1和@ project2为例。 @ project1和@ project2都有从project
表中检索的数据子集。在渲染之前,需要做一些事情:
1. merge @project1 and @project2 into @project
2. get rid of duplicate record in @project. like @project.uniq
3. render @project as json
对于合并,我们可能会@project = @project1.to_json + @project2.to_json
。然后@project
是json
对象。
如何摆脱@project
中的相同记录?我们不知道该怎么做。
为了渲染@project,我们可以render :json => @project in controller index (response_to do |format| format.json { render :json => @project })
吗?我们可以使用相同的index.html.erb
到render
json @project
而不做任何更改(我们在索引视图中将helper method
应用于each of @project
吗?
有人可以评论上面的步骤(工作与否),并阐明如何摆脱json对象中的重复记录?
还有像@project = @project1 + @project2
这样的解决方案吗?那可能是一种狂野的想象。
感谢您的帮助。
答案 0 :(得分:1)
将记录对象变为哈希值,然后合并哈希值。
h1 = @project1.attributes;
h2 = @project2.attributes;
@project.attributes = h1.merge(h2);
补充:在下面的评论中进行了一些交换之后找到了正确答案。
@project = @project1.merge(@project2).uniq