可能这个问题听起来很奇怪。但是因为我第一次这样做,不知道它到底叫什么。
我在 www.mealnut.com 的主页上使用了一种预先输入的搜索方法(请查看现场演示)。有两个条目,城市和类别。City 在 typeahead 数组中显示数据,并在提交时给出搜索结果。这是一个代码:
<%= form_tag search_path, :method => 'get' do %>
<%= text_field_tag 'search', nil, :placeholder =>"Enter your city ", :autocomplete => :off, :'data-provide' => "typeahead", :id=>"citysearch" %>
<%= select_tag :category, options_from_collection_for_select(@categories, "id", "category", params[:category]), html_options = { :prompt => 'Select a category'} %>
<%= submit_tag "Search"%>
<% end %>
这是预输入脚本:
$(document).ready(function(){
var cities = ["Bengaluru", "Pune", "New Delhi", "Delhi", "Mumbai"
$("input[data-provide='typeahead']").typeahead({source: cities});
});
这里有一个问题:当用户点击后退按钮返回主页时,城市被清除,类别保持选中状态。在这里用户应该看到城市,他上次输入而不是空白字段。
我认为这是因为 typeahead 只是给出数组并且不会在任何地方存储值。我不想为数组创建单独的表。
我发现 cookie 可能是选项。但不知道如何使用它,因为从未尝试过 cookie。此外,这个 cookie 或其他任何东西的最佳解决方案是什么?有人做过吗?
请帮忙!
更新:
我在控制器中为一个城市使用了 cookie。我的家庭控制器的索引操作是:
def index
@categories = Category.all
cookies[:search] = "Mumbai"
end
并将用于搜索的索引页面表单修改为:
<%= text_field_tag 'search', nil, :placeholder =>"#{cookies[:search]} ", :autocomplete => :off, :'data-provide' => "typeahead", :id=>"citysearch" %>
这显示了单击后退按钮时的孟买市。但我不希望城市被修复。它应该是用户输入的值。谁能告诉怎么做?