我有控制器动作:
def delete_image
@pictureup = Pictureup.find(params[:id])
@pictureup.remove_image!
respond_to do |format|
format.html { redirect_to root_url, notice: "Bild wurde gelöscht." }
format.json { head :no_content }
end
rescue ActiveRecord::RecordNotFound
redirect_to root_url, notice: "Bild gelöscht."
end
路线:
match "delete_image/:id" => "pictureups#delete_image", :as => 'delete_img'
一个工作生成的链接,只要我点击它自己:
<a href="/delete_image/157931" data-confirm="Are you sure?" id="alert">Delete</a>
如果我尝试做
jQuery(document).ready(function() {
jQuery('#alert').click();
});
显示数据确认对话框,但未调用控制器操作(无重定向,无&#34; image_delete&#34;)
任何想法为什么?如果我在我的控制器中使用其中一个CRUD操作尝试它,它的工作没有问题。
答案 0 :(得分:0)
您的:confirm
link_to会在呈现页面时将data-confirm
放入链接中。这导致Rail的jQuery-ujs将Javascript confirm绑定到链接。如果您检查jQuery-ujs源代码,您会看到如果confirm
成功,则会将隐藏的表单提交给link_to中的URL。
因此,最简单的方法是删除:confirm
并自己在jQuery中完成所有操作。对于常规的“点击链接”,您可以将自己的confirm
绑定到click
并在确认成功时调用另一个函数。如果您想使用jQuery进行删除,只需调用直接的第二个功能。
答案 1 :(得分:0)
好的修好了。
更改了路线:
resources :pictureups do
member do
delete :delete_image
end
end
更改了视图:
<%= link_to "Delete", delete_image_pictureup_path(@pictureup), method: :delete, :id=>"delete_img" %>
和JS:
jQuery('#delete_img').click();
所以它似乎与路由和调用动词有关。