Я пытаюсь заставить мое действие TagsController # index отображать только Вопросы, содержащие определенные теги, при передаче параметра поиска tag_name.Я не получаю сообщение об ошибке, просто не могу правильно настроить фильтр, чтобы при получении URL-адреса /tags?tag_name=something
отображались только эти вопросы.Вот настройки:
class Tag < ActiveRecord::Base
belongs_to :question
def self.search(str)
return [] if str.blank?
cond_text = str.split.map{|w| "tag_name LIKE ? "}.join(" OR ")
cond_values = str.split.map{|w| "%#{w}%"}
all(:order => "created_at DESC", :conditions => (str ? [cond_text, *cond_values] : []))
end
end
и
class Question < ActiveRecord::Base
has_many :tags, :dependent => :destroy
end
ссылка тега, которая отправит URL-адрес в TagsController выглядит следующим образом:
<%= link_to(tag_name, tags_path(:tag_name => tag_name)) %>
и выводит:
/tags?tag_name=something
В моем представлении /views/tags/index.html.erb
я задаю вопросы, визуализируя частичный /views/questions/_question.html.erb
.
<%= render :partial => @questions %>
Когда я отправляю URL с параметром поиска, ничего не происходит.Вот мое действие TagsController # index:
def index
@tags = Tag.search(params[:search]).paginate :page => params[:page], :per_page => 5
@tagsearch = Tag.search(params[:search])
@tag_counts = Tag.count(:group => :tag_name,
:order => 'count_all DESC', :limit => 100)
@questions = Question.all( :order => 'created_at DESC', :limit => 50)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @tags }
end
end
Как правильно отфильтровать вопросы, отображаемые в файле /views/tags/index.html.erb
для параметра tag.tag_name
?
UPDATE:
Похоже, я понял это.Я просто должен был заменить:
<%= link_to(tag_name, tags_path(:tag_name => tag_name)) %> x<%=tag_count%>
на
<%= link_to(tag_name, tags_path(:search => tag_name)) %> x<%=tag_count%>