如何在Rails索引页面中显示两个模型的json数据?

时间:2018-12-13 12:30:23

标签: ruby-on-rails ruby

在控制器中

 class V1::ItemsController < ApplicationController

 def index

images = Image.all  
 render json: {status: 'SUCCESS', message:'Loaded images', 
data:images},status: :ok

items = Item.all
render json: {status: 'SUCCESS', message:'Loaded items', 
data:items},status: :ok

end

end

在模型中

item.rb
has_many :images, dependent: :destroy

image.rb
belongs_to :item

当我要渲染json数据时,出现这样的错误

此操作多次调用了渲染和/或重定向。请注意,您只能调用渲染或重定向,每个操作最多只能调用一次。还要注意,重定向和渲染都不会终止操作的执行,因此,如果要在重定向后退出操作,则需要执行“ redirect_to(...)并返回”之类的操作。

请帮助.........

1 个答案:

答案 0 :(得分:1)

您已定义ItemsController来同时提供imagesitems这是不合适的,因此,如果您使用关联进行此操作将更加相关,但是需要在视图侧进行更改。

如果您以以下格式传递数据,这将是一种很好的格式,

def index

  data = { images: Image.all.as_json, items: Item.all.as_json }
  render json: { status: 'SUCCESS', message: 'Loaded images & items', data: data, status: :ok }

end

更新:对于表演动作,您可以将其传递为

data = { image: @image.attributes, item: @item.attributes }

@image和@item是这里的对象