Rails 5:用HTML(而不是javascript)响应AJAX调用

时间:2017-07-21 10:01:02

标签: javascript jquery ruby-on-rails ajax

(Rails版本5.1.2)

我想用HTML而不是javascript响应AJAX的原因与this堆栈溢出问题中概述的原因相同。

然而,我实际上无法让它发挥作用。

我正在使用form_forremote: true通过AJAX发送请求。请注意,我还尝试了data: {type: :html}

我的控制器操作具有行render layout: !request.xhr?并具有关联的视图。我希望将此视图发送回客户端。

然而客户端代码:

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

给出:

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

HTML在哪里?

1 个答案:

答案 0 :(得分:0)

除非我完全误解你想做什么,否则这应该是你想要的:

<强>的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

我错过了什么吗?