adarsh
adarsh

Reputation: 308

How can display json data two models in Rails index page?

in controller

 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

in model

item.rb
has_many :images, dependent: :destroy

image.rb
belongs_to :item

when i am going to render json data i am getting error like this

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

pls need help.........

Upvotes: 1

Views: 322

Answers (1)

ray
ray

Reputation: 5552

You have defined ItemsController to provide both images & items which is not proper, so it will be more relevant if you do it using association but will need changes at view side.

It will be real good format if you pass your data in following format,

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

update: For show action, you can pass it as,

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

@image & @item are objects here

Upvotes: 1

Related Questions