Как отфильтровать представление индекса с двумя раскрывающимися списками выбора в Rails

Я хочу, чтобы пользователи могли фильтровать сообщения в моем индексном представлении с помощью параметров в двух раскрывающихся списках.

HTML-код выглядит следующим образом:

<h1> Sort by 
    <select>
      <option value="newest">newest</option>
      <option value="popular">most popular</option>
      <option value="interest"> your interests</option>
    </select> 
  through 
    <select>
        <option value="all">all</option>
        <option value="tasks">tasks</option>
        <option value="feedback">feedback</option>
        <option value="investments">investments</option>
      </select>
   </h1>

Я знаю, что не использую помощников Rails, но это потому, что я не понимаю, как их использовать в этом контексте.

В первом раскрывающемся списке параметры предназначены для различных методов в модели сообщений (я поместил их сюда, потому что без параметров из помощников рельсов я не знаю, как включить их в метод индекса в контроллере).

def self.highest_voted
        self.order("cached_votes_score DESC")
    end

    def self.tailored_for_user
        @posts = Post.all.order("created_at DESC").tagged_with.current_user.tag_list
    end

Во втором раскрывающемся списке параметры представляют собой различные типы сообщений, которые, опять же, являются методами в модели сообщений.

def self.show_feedback Post.joins(:feedbacks) конец

    def self.show_crowdfunding
        Post.joins(:crowdfundings)
    end

    def self.show_task
        Post.joins(:ideas)
    end

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

Я использую драгоценные камни act_as_taggable_on и act_as_votable_on, а также кокон для создания вложенных атрибутов (отзывов, краудфандинга, идей).

Пожалуйста, дайте мне знать, если я был неясен или упустил информацию.


person Tara Mahoney    schedule 20.08.2015    source источник


Ответы (2)


Вы можете попробовать добавить это: collection_select(:post, :author_id, Author.all, :id, :name_with_initial, prompt: true) в свою форму. (Но, очевидно, с вашими атрибутами.) Для получения дополнительной информации: collection_select

person bork    schedule 20.08.2015
comment
Я думаю, что проблема с этим ответом заключается в том, что я не хочу перечислять атрибут, такой как имя, я хочу перечислять метод. Должен ли я создавать атрибуты для каждого имени метода, а затем перечислять их? - person Tara Mahoney; 21.08.2015

Как вы отправляете запрос на сервер?

Вы можете создать области для каждого значения параметра, а затем связать их в цепочку. http://guides.rubyonrails.org/active_record_querying.html#scopes

Затем вы можете просто выполнить Post.investments.newest или любой другой вариант, который вам нужен, и все готово.

person dom    schedule 21.08.2015