Используйте 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>