I have a controller "UserController" that should respond to normal and ajax requests to http://localhost:3000/user/3
.
When it is a normal request, I want to render my view. When it is an AJAX request, I want to return JSON.
The correct approach seems to be a respond_to do |format|
block. Writing the JSON is easy, but how can I get it to respond to the HTML and simply render the view as usual?
def show @user = User.find(params[:id]) respond_to do |format| format.html { render :show ????this seems unnecessary. Can it be eliminated??? } format.json { render json: @user } end end
As per my knowledge its not necessary to "render show" in format.html it will automatically look for a respective action view for ex : show.html.erb for html request and show,js,erb for JS request.
so this will work
respond_to do |format| format.html # show.html.erb format.json { render json: @user } end
also, you can check the request is ajax or not by checking request.xhr? it returns true if request is a ajax one.
Yes, you can change it to
respond_to do |format| format.html format.json { render json: @user } end
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