在我的控制器中:
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视图的任何想法?
答案 0 :(得分:0)
您可以尝试创建.js.erb部分或文件来处理format.js响应。您可以从当前的html partial复制代码,然后使用jquery / javascript append / prepend / before方法将生成的HTML放在您需要的任何位置。