Фильтрация вопросов (сообщений) по tag_name в TagController # индекс передачи / тегов? Tag_name = что-то - PullRequest
0 голосов
/ 31 мая 2010

Я пытаюсь заставить мое действие 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%>

Ответы [ 2 ]

0 голосов
/ 01 июня 2010

Похоже, я понял это. Я просто должен был заменить:

<%= 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%>
0 голосов
/ 31 мая 2010

Я считаю, что проблема в формате вашего SQL-предложения, вам нужен формат

%<query-here>%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...