轨道上的红宝石 - 我使用 check_box_tag 助手过滤项目,如何使用link_to助手完成相同的过滤



我有一个页面,我需要在其中发送参数,以便网址如下所示:

/my_controller?stores%5BStoreName%5D=1

但是,当我尝试形成我的link_to时,我得到这个网址:

/my_controller?stores%5B%5D=5BStoreName&stores%5B%5D=1

在我看来,这是link_to代码:

<%= link_to store, my_controller_path(:stores => [store, 1]) %>

如何更改我的代码,以便使用与所需链接匹配的参数来构建 url?

我的参数应该看起来像{"stores"=>{"StoreName"=>"1"},但现在它们看起来像{"stores"=>["StoreName", "1"]

控制器:

这是我的控制器中正在读取此哈希的索引方法 - 为清楚起见。

def index    
  @all_stores = Product.all_stores
  @selected_stores = params[:stores] || session[:stores] || {}
  if @selected_stores == {}
    @selected_stores = Hash[@all_stores.map {|store| [store, store]}]
  end
  if params[:stores] != session[:stores]
    session[:stores] = params[:stores]
    redirect_to :stores => @selected_stores and return
  end
  @products = Product.order("created_at desc").limit(150).find_all_by_store(@selected_stores.keys).group_by { |product| product.created_at.to_date}
  . . . etc

背景:

这里更大的图景是目标页面(上面的链接将链接到)是一个列出按商店过滤的所有产品的页面。 筛选器通常的工作方式是使用一组复选框(用户可以标记复选框以显示来自特定商店的产品)。 所需的链接会将用户直接带到已应用所需过滤器的此页面 - 而无需标记复选框。

有关其他参考,以下是过滤该目标页面产品的复选框帮助程序:

<%= check_box_tag "stores[#{store}]", 1, @selected_stores.include?(store), :id => "stores_#{store}" %>

使用 <%= link_to store, my_controller_path(:stores => { store => 1}) %>

相关内容

  • 没有找到相关文章

最新更新