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アクションの1つで試してみると、問題なく動作します。

4

2 に答える 2

0

:confirmin you link_to は、data-confirmページがレンダリングされるときにリンクに挿入します。これにより、Rail の jQuery-ujs が Javascript確認をリンクにバインドします。jQuery-ujs のソースを確認すると、confirm成功すると link_to の URL に非表示のフォームが送信されることがわかります。

したがって、最も簡単な方法は、を削除して:confirm、jQuery ですべて自分で行うことです。通常の「リンクをクリックする」場合、確認が成功した場合は、独自の関数を にバインドconfirmし、click別の関数を呼び出すことができます。jQuery を使用して削除を実行したい場合は、その 2 番目の関数を直接呼び出すだけです。

于 2013-05-12T07:45:20.293 に答える