如何在没有额外视图的情况下在rails中处理AJAX创建请求?

时间:2015-11-30 21:09:03

标签: ruby-on-rails

在我的控制器中:

respond_to do |format|
  format.html { redirect_to handlers_url }
  format.js { render @handler, layout: false }
end

在我的handlers.coffee文件中:

$ ->
  $('body').on 'ajax:error', '#new_handler', (event, data, status, error) ->
    console.log error

  $('body').on 'ajax:complete', '#new_handler', (event, data, status) ->
    console.log status
    $('#new_handler').remove()
    $(data.responseText).prependTo('tbody')

从表面上看,这是因为数据(使用_handler.html.erb文件呈现)会附加到tbody元素。但是如果我改变ajax:完成ajax:成功,并且ajax:错误每次都会触发:

parsererror
SyntaxError: Unexpected token <(…)

看起来错误是因为我从_handler.html.erb模板渲染HTML而jQuery期待纯JS。但我不知道如何在不使用单独的create.js.coffee文件的情况下发送纯JS,我正试图避免这种情况。

关于如何在控制器中完成该操作而不创建额外的javascript视图的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以尝试创建.js.erb部分或文件来处理format.js响应。您可以从当前的html partial复制代码,然后使用jquery / javascript append / prepend / before方法将生成的HTML放在您需要的任何位置。