Dưới đây là những gì bạn cần:
form_tag({ :controller => :magic, :action => :search, :method => post }, { :remote => true }) do ....
loại của nó của một thiết kế xấu, nhưng Rails form_tag
phương pháp đòi hỏi HAI băm - các tùy chọn url_for băm, và các tùy chọn thường xuyên băm. Điều này đã tạo ra nhiều sự nhầm lẫn cho nhiều lập trình viên Rails. Nếu bạn không thêm ranh giới băm delineating, tất cả các tùy chọn được chuyển tới url_for(), hủy hoại :remote => true
.
Điều này sẽ thêm data-remote="true"
vào biểu mẫu của bạn (được sử dụng với javascript không phô trương, như những người khác đã đề cập). Từ đó bạn cần tạo AJAX thích hợp để ràng buộc để thực hiện yêu cầu.
Mặc dù thực sự bạn nên sử dụng tuyến đường được đặt tên như magic_search_path
thay vì thông số bộ điều khiển/hành động.
Câu trả lời đúng là tách hai tham số băm, nhưng trong Rails 3 hoạt động với 'form_tag' và tham số': remote => true'. Rails 3 nhằm mục đích không phô trương với javascript được tạo ra, và logic để gửi nó như là một yêu cầu ajax nằm ở phía khách hàng, với trình điều khiển Javascript của sự lựa chọn của bạn. Xem http://railscasts.com/episodes/205-unobtrusive-javascript – Chubas