I have a simple angular rails app that I am trying to get wired up.
Here is my rails controller:
class ItemsController < ApplicationController
respond_to :json, :html
def index
@items = Item.order(params[:sort]).page(params[:page]).per(15)
end
def show
@item = Item.where(params[:id])
if @item.empty?
flash[:alert] = "Item number #{params[:id]} does not exist"
else
respond_with @item do |format|
format.json { render :layout => false }
end
end
end
end
I keep getting the ActionView::MissingTemplate
error because rails keeps trying to serve up an erb template. I don't want a template!! I just want json. Can some one please give the definitive respond_to/respond_with syntax that will rid me of templates forever?
there are two ways in rails for rendering, CMIIW
first, as default, it will render a view template, example
def show
end
then it will render default show view template, example: app/views/controller_name/show.html.erb
second is by manual render, use render
method
if you want to respond to json only, then:
class ItemsController < ApplicationController
def show
id = params.require(:id)
@item = Item.find_by(id: id)
if @item.nil?
render json: { message: "Item number #{id} does not exist", status: :not_found }
else
render json: @item
end
end
end
no need to use respond_to
, and it's been removed from newest rails too
rails guide about render
is really useful, you can read it here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With