2011-09-01 15 views
10

CRUD için AJAX kullanan bir denetleyicim var, ancak uzak bağlantılardan birini tıklattığımda (örneğin sil), rayların sunucusunun beni günlüğe kaydetme ve yeniden yönlendirmeye karar verdiklerini görüyorum. Sunucu günlüklerinin incelenmesi, CSRF Orijinalliğini doğrulayamadığını belirtir. İstekte CSRF belirtecini nasıl ekleyebilirim?Devour Logging Kullanıcı AJAX isteğinde. Raylar 3.1

Koşu: - 3.1 Raylar - jquery-ray 1.0.13

İlgili Kontrolör Eylem - 1.4.4 Vasiyetle:

def destroy 
    @article = Article.find(params[:id]) 
     if @article.destroy 
     flash[:notice] = "Article deleted." 
     respond_to do |format| 
     format.html{redirect_to articles_path} 
     format.js{} 
     end 
     else 
     flash[:error] = "Try Again." 
     redirect_to :back 
     end 

Düzenleri/application.html.erb

 <head> 
    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title> 
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap-1.1.1.min.css> 
    <%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag :defaults %> 
    <script type="text/javascript">jQuery.ajaxSetup({ beforeSend: function (xhr) { xhr.setRequestHeader("Accept", "text/javascript"); } });</script> 
    <%= csrf_meta_tag %> 
    <%= yield(:head) %> 
    </head> 
peşin

teşekkürler.

cevap

8

Raylar 3.1 Eğer application.js dosyasında bu olmasını isteyen mücevher 'jquery-ray' kullanır.

+0

Ahh, bu benim de sorunumu çözdü. Teşekkürler! – neezer

4

Sen html sayfası bu olmalıdır:

<%= csrf_meta_tag %> 

aşağıdaki üretir: Eğer POST do zaman

<meta name="csrf-param" content="authenticity_token"/> 
<meta name="csrf-token" content="the token comes here"/> 

(SİL, PUT bağımlı aslında POST ama _method seti vardır), ile birlikte yazdığınız verilere {authenticity_token: "the token comes here"}'u dahil etmelisiniz. Ben jquery_ujs unutmuştu ve sizinle aynı sorunu başlamıştı

//= require jquery 
//= require jquery_ujs 

:

+0

Evet, emin misin mizanpajınızda var olun. –

+0

Yine de, bu garip kısmı. Ben application.html.erb –

+0

ajax çağrılarında araya Sizin gönderme belirteci var? –