1

可能这个问题听起来很奇怪。但是因为我第一次这样做,不知道它到底叫什么。

我在 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" %>

这显示了单击后退按钮时的孟买市。但我不希望城市被修复。它应该是用户输入的值。谁能告诉怎么做?

4

0 回答 0