Ok, tôi đã sử dụng ajax trong các ứng dụng đường ray của tôi trong một thời gian. Bằng cách nào đó, trong Rails 3.1 đầu tiên của tôi ứng dụng tôi có thể không nhận được những điều cơ bản để làm việc ..Không thể sử dụng UJS trong Rails 3.1
# application.js
//= require jquery
//= require jquery_ujs
# the form
= form_for @signup, :url => '/signup', :remote => true do |f|
= f.text_field :email, :class => 'email', :size => 26
= f.submit 'Notify me'
# the controller
def signup # route.rb has 'match '/signup' => 'controller#signup'
respond_to do |format|
format.js
end
end
# view: signup.js.erb
alert('wtf?');
Bây giờ, từ những gì tôi có thể nói, điền vào mẫu này nên kích hoạt các hộp cảnh báo. Nó không. Việc gửi biểu mẫu không đi tới hành động của trình điều khiển, điều này sẽ hiển thị mẫu:
Rendered teaser_pages/signup.js.erb (0.1ms)
Completed 200 OK in 8ms (Views: 7.2ms | ActiveRecord: 0.0ms)
Chỉ không có js nào được kích hoạt.
người giúp đỡCác UJS được nạp và hoạt động mặc dù (tôi nghĩ) vì nếu tôi làm ..
link_to 'click me', '#', :confirm => 'confirmation box!'
..it sẽ kích hoạt một hộp thoại xác nhận như mong đợi.
Tôi có thể thiếu gì? Mọi hướng nhìn sẽ được đánh giá cao.
Cảm ơn bạn, Erwin
UPDATE:
Vì vậy, có vẻ như đường ray được minh content-type sai trong tiêu đề, cung cấp text/html
thay vì text/javascript
. Sau một số thử nghiệm thậm chí:
render :js => "alert('AHAHAHAHA');", :content_type => 'text/javascript'
vẫn sẽ làm một tiêu đề với nội dung kiểu text/html
Khi tôi chạy một ứng dụng mới với cùng một phiên bản của jquery-rails
nó hoạt động. Trong ứng dụng này nó không ..
Tôi nên tìm ở đâu?