如何结合2个对象(具有相同的数据结构)并在rails 3.2.12中渲染?

时间:2013-04-02 21:12:27

标签: ruby-on-rails json ruby-on-rails-3 render

在我们的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。然后@projectjson对象。

如何摆脱@project中的相同记录?我们不知道该怎么做。

为了渲染@project,我们可以render :json => @project in controller index (response_to do |format| format.json { render :json => @project })吗?我们可以使用相同的index.html.erbrender json @project而不做任何更改(我们在索引视图中将helper method应用于each of @project吗?

有人可以评论上面的步骤(工作与否),并阐明如何摆脱json对象中的重复记录?

还有像@project = @project1 + @project2这样的解决方案吗?那可能是一种狂野的想象。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

将记录对象变为哈希值,然后合并哈希值。

h1 = @project1.attributes;
h2 = @project2.attributes;
@project.attributes = h1.merge(h2);

补充:在下面的评论中进行了一些交换之后找到了正确答案。

@project = @project1.merge(@project2).uniq