Tôi đang sử dụng Đá quý Ransack trong Rails 3.1. Mọi thứ hoạt động như mong đợi. Tuy nhiên, tôi có một mẫu tìm kiếm sẽ tra cứu một người sử dụng a Soundex column mà tôi đang gặp vấn đề.Đường ray - Cách không đánh giá một trường trong biểu mẫu tìm kiếm Ransack
Trong biểu mẫu của tôi, tôi có trường "given_name_soundex_cont", người dùng sẽ nhập tên "Joe". Bộ điều khiển của tôi chuyển đổi "joe" thành mã âm thanh, và sau đó Ransack tìm kiếm một kết quả phù hợp trong cột "given_name_soundex".
Tất cả các bản ghi trùng khớp được trả lại và có vẻ tốt, ngoại trừ trường mà người dùng nhập từ "joe" bây giờ sẽ hiển thị giá trị âm thanh thay thế (tất nhiên vì tôi đã thay đổi tham số).
Vì vậy, tôi figured tôi chỉ có thể thêm một trường "given_name_cont" và ẩn trường "given_name_soundex_cont", nhưng bây giờ Ransack muốn bao gồm "given_name_cont" trong truy vấn, mà tôi không muốn.
Có ai biết cách tôi có thể bao gồm các trường trong biểu mẫu tìm kiếm Ransack mà không Ransack thực sự đánh giá chúng. Bằng cách đó tôi có thể xác định các trường nào được đánh giá và không được đánh giá.
Nếu nó giúp đây là những gì tôi có trong bộ điều khiển của tôi:
def index
if !params[:q].blank? # nil.blank? and [].blank? are true
search_params = params[:q]
search_params[:given_name_soundex_cont] = convert_to_soundex(search_params[:given_name_soundex_cont])
@q = Person.search(search_params)
@results = @q.result.limit(50)
else
@q = Person.search(params[:q])
@results = []
end
end
private
def convert_to_soundex(text)
Text::Soundex.soundex(text.to_s)
end
Và theo quan điểm của tôi:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>
<%= f.submit %>
<% end %>