2014-02-06 3 views
1

У меня есть массив, в котором есть десять имен, и я просматриваю их в html.erb для элементов списка, и я хочу, чтобы они также были ссылками. Поэтому, когда вы нажимаете на ссылку, вы можете искать это индивидуальное имя, которое было нажато. проблема заключается в том, что он принимает меня на путь, который я хочу, но показывает всю мою базу данных вместо единственного имени.Используйте link_to для поиска внутри цикла for

Вот мой код 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 
+0

от контроллера, это выглядит так, как будто вы рендеринг 'list' действие, верно? Где ваш звонок в 'DjList.search'? Можете ли вы также отправить этот код? – Aupajo

+0

В соответствии с этим кодом его вообще не вызывают. –

+0

А, так вы ищете, как настроить его, чтобы вызвать 'DjList.search'? – Aupajo

ответ

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-имен ... и вы хотите, чтобы каждая ссылку, чтобы перейти к различным DJ-имени в (. не один в настоящее время хранится в Params, но один, перечисленные в этой итерации цикла так что вместо использования:

<li><%= link_to n, search_list_path(:dj_name => n) %></li> 
Смежные вопросы