使用link_to在for循环内搜索

时间:2014-02-06 23:20:37

标签: ruby-on-rails ruby-on-rails-4 rails-routing

我有一个包含十个名字的数组,我在html.erb中循环浏览列表项,我希望它们也是链接。因此,当您单击该链接时,您可以搜索单击的个人名称。我遇到的问题是它带我到我想要的路径,但显示我的整个数据库而不是单数名称。

以下是list.html.erb的代码

<%=render 'layouts/search_bar' %>

<h2>Top DJs Worldwide</h2>
  <ol>
    <%  @djsList.each do |n|%>
            <li><%= link_to n,  search_list_path(:params[n] ) %></li>
     <% end %>  
  </ol>

<p><%=link_to "List from DJ MAG",  "http://djmag.com/top100", :target => "_blank "%></p>

<section>
    <%= render "layouts/comments"%>
</section>

这是此页面的控制器

class DjsController < ApplicationController
  def list
    @djsList = ["Hardwell", "Armin Van Buuren", "Avicii", "Tiesto", "David Guetta", "Dimitri Vegas & Like Mike", "Nicky Romero", "Steve Aoki", "Afrojack",  "Dash Berlin"]
  end
end

这是数据库的模型

class DjList < ActiveRecord::Base

  def self.search search_term
    return scoped unless search_term.present?
    where(['dj_name LIKE ?' , "%#{search_term}%"])
  end

end

这是search_controller.rb

class SearchController < ApplicationController
  def list
    @search = DjList.search(params[:dj_name]).all

    @listShows = [ "Dash Berlin at SoundGarden Hall, Friday, January 31, 2014" ]

  end
end

1 个答案:

答案 0 :(得分:0)

这是一个错字吗? (:params应为params)。

<li><%= link_to n,  search_list_path(:params[n] ) %></li>

所以:

<li><%= link_to n,  search_list_path( params[n] ) %></li>

另外 - 你怎么告诉路径这个参数的名字是什么?你只是传递一个原始的 - params必须是一个键值对,你没有给它任何键。尝试:

<li><%= link_to n,  search_list_path( :dj_name => params[n] ) %></li>

最后......我很确定你在不同的 dj-names的循环中...并希望每个链接转到不同的 dj-name(不是当前存储在params中的那个,而是循环的迭代中列出的那个。所以请改用:

<li><%= link_to n,  search_list_path( :dj_name => n ) %></li>