0

我有一个控制器动作:

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();
});

显示数据确认对话框,但未调用控制器操作(无重定向,无“image_delete”)

任何想法为什么?如果我在我的控制器中使用其中一个 CRUD 操作尝试它,它的工作没有问题。

4

2 回答 2

0

你的:confirmlink_todata-confirm在页面呈现时将链接放入。这导致 Rail 的 jQuery-ujs 东西将 Javascript确认绑定到链接。如果您检查 jQuery-ujs 源代码,您会看到如果confirm成功,则会向 link_to 中的 URL 提交一个隐藏的表单。

所以,对你来说最简单的事情就是删除:confirmjQuery 并自己完成这一切。对于常规的“单击链接”,如果确认成功,您可以将自己绑定confirmclick并调用另一个函数。如果您只想使用 jQuery 进行删除,只需直接调用第二个函数。

于 2013-05-12T07:45:20.293 回答
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();

所以它似乎与路由和调用动词有关。

于 2013-05-13T05:53:13.327 回答