2011-06-08 23 views
6

Yeni bir ray 3 uygulamasında ilk uzak formuma geldim ve uzaktan göndermek için alamıyorum: html olarak göndermeye devam ediyor. Bunu diğer raylar 3 uygulamasında tamam yaptım, bu yüzden sadece unuttuğum bir şey olması gerektiğini düşünüyorum.Raylar 3 uzak formu html olarak gönderiliyor

 <%= form_for Assignment.new, :remote => true do |f| %> 
     <%= hidden_field_tag "assignment[task_id]", @task.id %> 
     <%= hidden_field_tag "assignment[person_id]", person.id %>    
     <%= submit_tag "Add to task" %> 
     <% end %>  

Ve işte sayfadaki dışarı nasıl oluşturduğunu açıklanmıştır:

İşte benim html.erb dosyasında benim formun. Javascript dosyası bağlantılarını ekledim, çünkü problemin doğru şekilde kurulmamasıyla ilgili bir şey olduğunu düşünüyorum.

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8" /> 
    <script src="/javascripts/jquery.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/person.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/jquery-ui-1.8.11.custom.min.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/jquery_ujs.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/jquery.ui.datepicker.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/jquery.colorbox-min.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/jquery.tipTip.minified.js?1306857355" type="text/javascript"></script> 
    <script src="/javascripts/application.js?1306857355" type="text/javascript"></script> 

    <meta name="csrf-param" content="authenticity_token"/> 
    <meta name="csrf-token" content="ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358="/> 
    </head> 

    <body class="tasks"> 

    <form accept-charset="UTF-8" action="/assignments" class="new_assignment" data-remote="true" id="new_assignment" method="post"> 
     <div style="margin:0;padding:0;display:inline"> 
     <input name="utf8" type="hidden" value="&#x2713;" /> 
     <input name="authenticity_token" type="hidden" value="ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358=" /> 
     </div> 
     <input id="assignment_task_id" name="assignment[task_id]" type="hidden" value="2" /> 
     <input id="assignment_person_id" name="assignment[person_id]" type="hidden" value="1" />    
     <input name="commit" type="submit" value="Add to task" /> 
    </form>  

    </body> 
</html> 

Her şey düzgün şekilde ayarlanmış gibi görünüyor. i gönderdiğinizde Ama benim günlüğünde bunun üstesinden:

Started POST "/tasks/2" for 127.0.0.1 at 2011-06-08 15:56:42 +0100 
    Processing by TasksController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358=", "assignment"=>{"task_id"=>"2", "person_id"=>"1"}, "commit"=>"Add to task", "id"=>"2"} 

dediğim gibi, ben sadece ben düzgün bu kanca için yapmanız gereken bir şey kaçırdığınızı düşünüyorum. İşte bu durum söz konusu olduğunda Gemfile'ım da işte:

Neyin eksik olduğunu gören var mı?
teşekkürler, maks

DÜZENLEME - benim üzerimde yanlış bir hata: uzak formu içeren kısmi, aynı eylemi çağıran başka bir uzak olmayan formun içinden çağrılıyordu. Böylece dış biçim, içteki uzak olan değil, gönderme düğmesi tarafından tetikleniyordu. Hamuru. Okuduğunuz için teşekkürler.

+0

"jquery_ujs.js" dosyanız şu dosyayla aynıdır: https://github.com/rails/jquery-ujs/blob/master/src/rails.js –

+0

@dmarkow - onları ayırdım ve güzeller çok özdeş - bazı farklılıklar ile sadece birkaç satır. Onları değiştirmeyi denedim ve yardım etmedi. –

+1

Form kodunuz '/ assignments 'olarak yayınlanacak şekilde ayarlanmıştır, ancak günlük alıntılarınız'/tasks/2' için bir güncelleme içindir ... –

cevap

7

Aynı sorunu çözdüğüm aynı problemi ekledim: format =>: js.

<%= form_for :assignment, :url => assignments_path(:format => :js) 
+1

raylar 4: <% = form_for @assignment, url: ödev_sayısı, biçim:: js%> – lucianosousa

0

Bunu da ben koştu olsa farklı nedenlerle:

Yani böyle bir şey olmazdı. Benim durumumda form_for yerine form_tag kullanımım nedeniyle oldu. İkincisi, Ajax'ın üzerinden gitmesini sağlamak için uygun paramları açıkça ekler.