Rails làm cho 'suggest' kiểu hoàn thành tự động trên các lĩnh vực văn bản thực sự dễ dàng bằng cách sử dụng phương pháp text_field_with_auto_complete
.
Trong Rails 1.x phương pháp này được xây dựng thành ActionView::Helpers::JavaScriptMacrosHelper
, nhưng đối với Rails 2.x nó đã được chuyển đến a separate plugin.
Giả sử bạn có một kiểu gọi là Post
có trường văn bản được gọi là title
. Theo quan điểm của bạn, nơi bạn thường sử dụng text_field_tag
(hoặc f.text_field
), chỉ cần sử dụng text_field_with_auto_complete
thay vì:
<%= text_field_with_auto_complete :post, :title %>
Ngoài ra, trong PostsController
, bạn phải đưa ra tuyên bố tương ứng:
class PostsController < ApplicationController
auto_complete_for :post, :title
end
Điều này không đằng sau hậu trường là tự động thêm một hành động được gọi là auto_complete_for_[object]_[method]
vào bộ điều khiển. Trong ví dụ trên, hành động này sẽ được gọi là auto_complete_for_post_title
.
Điều đáng nói là cuộc gọi find
được sử dụng bởi hành động được tạo tự động này sẽ hoạt động trên tất cả các đối tượng mô hình, ví dụ: Post.find(:all, ...)
. Nếu đây không phải là hành vi bạn muốn (ví dụ: nếu muốn giới hạn tìm kiếm cho một tập hợp con cụ thể là Post
s dựa trên người dùng đã đăng nhập) thì bạn phải xác định hành động auto_complete_for_[object]_[method]
của riêng mình trong bộ điều khiển.