Rails:如何动态存储值或作为cookie存储值

时间:2013-04-12 09:04:20

标签: cookies ruby-on-rails-3.2

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

我在www.mealnut.com的主页上有一个使用typeahead的搜索方法(请查看现场演示)。有两个条目,城市和类别。 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 %>

这是typeahead脚本:

$(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" %>

这显示城市孟买点击后退按钮。但我不希望城市得到修复。它应该是用户输入的值。谁能说出怎么做呢?

0 个答案:

没有答案