我目前在我的控制器中使用它
respond_to do |format|
format.html { render :js => alert('example') }
end
这在我的 application.js 中
$(document).ajaxSuccess( function(event, xhr, settings) {
if ( settings.url == '/example' ) {
eval(xhr.responseText)
} else if ( settings.url.match(/[\/example\/\d]+$/)) {
eval(xhr.responseText)
loadComplete()
} else {
(etc)
}
})
在 ajax 响应中返回 JS 并让浏览器执行它。我这样做是为了避免编写一个新的 .js.erb 文件来适应每个可能的响应。
有没有更好的方法来做到这一点?我认为减少文件数量会很好,但是必须在 ajaxSuccess settings.url 上使用正则表达式来分离 JS 响应是非常恶心的。