简体   繁体   中英

Rails 5: Respond to AJAX call with HTML (instead of javascript)

(Rails version 5.1.2)

I would like to respond to AJAX with HTML rather than javascript for much the same reasons as outlined in this stack overflow question.

However, I can't actually get it to work.

I'm using form_for with remote: true to send the request via AJAX. Note that I've also experimented with data: {type: :html} .

My controller action has the line render layout: !request.xhr? and has an associated view. It's this view that I want sent back to the client.

Yet the client-side code:

$("form").on('ajax:success', (e, data, status, xhr) ->
  console.log xhr.responseText #using console.log data produces same result
)

Gives:

Turbolinks.clearCache()
Turbolinks.visit("http://localhost:3000/...", {"action":"replace"})

Where's the HTML?

Unless I am completely misunderstanding what you want to do, this should be what you are looking for:

Javascript :

$.ajax({
  // remember to add this route to your routes file
  url: "products/ajax_render",
  success: function(data){
    $('.some_div').html(data['html'])
  },
});

Ruby on Rails :

def ajax_render
  # render some view and store it in a variable
  html = render "products/your_view"

  # return it inside the json response
  render json: { html: html }
end

Am I missing something?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM