Используйте link_to для поиска внутри цикла for

У меня есть массив с десятью именами, и я перебираю их в своем 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 ответ

Это опечатка? (:params должно быть params).

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

Так:

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

Кроме того - как вы говорите путь, как называется этот параметр? вы просто передаете необработанное значение - параметры должны быть парой ключ-значение, а вы не дали ей ключ. Пытаться:

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

Наконец... Я почти уверен, что вы находитесь в цикле с разными dj-именами... и вы хотите, чтобы каждая ссылка шла на свое dj-имя (не то, которое в настоящее время хранится в params, а то, которое указано в эта итерация цикла. Так что используйте вместо этого:

<li><%= link_to n,  search_list_path( :dj_name => n ) %></li>
Другие вопросы по тегам