我有这个红宝石代码:
link_to t("general.actions.#{ action }"), [action, @app, item], {
:method => :put,
:remote => true,
:onclick => '$(this).closest("tr").find("td").fadeOut()'
}, :class => 'status'
生成此html:
<a href="/apps/guess-the-model/contents/52118140d644363dc4000005/approve"
data-method="put"
data-remote="true"
onclick="$(this).closest("tr").find("td").fadeOut()"
rel="nofollow">
approve
</a>
问题是,我不应该使用onclick。我应该只在AJAX成功的时候调用这个js代码,所以我应该以某种方式传递一个回调并检查XMLHttpRequest状态。如何使用:remote => true
和:method= :put
?
答案 0 :(得分:4)
使用remote: true
,Rails以格式js
对您的控制器操作进行ajax调用。因此,当您准备好渲染输出时,在控制器的操作中,您只需指定format.js
选项,如下所示:
def action
...
respond_to do |format|
format.html {...} # You probably have something like this already
format.js {} # Add this line
end
然后,您需要在action.js.erb
目录中添加app/views/app/
文件,并执行您希望在onclick
执行的javascript代码。
答案 1 :(得分:0)
您也可以像这样在JavaScript中use the 'ajax:success' hook:
jQuery
$('a.status').on('ajax:success', function(ev) {
$(this).closest("tr").find("td").fadeOut()
})
咖啡
$ ->
$("a.status").on "ajax:success", (event) ->
//your code
并删除链接的onclick
属性。