如何在Rails

时间:2015-08-20 21:53:21

标签: ruby-on-rails ruby acts-as-taggable-on cocoon-gem

我希望用户能够通过两个下拉列表中的选项过滤索引视图中的帖子。

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助手,但是因为我不了解如何在这种情况下使用它们。

在第一个下拉列表中,选项是针对帖子模型中的不同方法(我把它们放在这里是因为没有来自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(:反馈)         端

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

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

我不明白如何在我的视图中编写我需要的代码,以便以这种方式呈现帖子。有人可以让我开始吗?我在这个问题上花了这么长时间,真的会从第二双眼睛中受益。

我正在使用acts_as_taggable_on和acts_as_votable_on gems,以及cocoon来构建嵌套属性(反馈,众筹,想法)。

如果我以任何方式不清楚或缺少信息,请告知我。

2 个答案:

答案 0 :(得分:0)

您可以尝试将此collection_select(:post, :author_id, Author.all, :id, :name_with_initial, prompt: true)添加到表单中。 (但显然有你的属性。)欲了解更多信息:collection_select

答案 1 :(得分:0)

您如何将请求发送到后端?

您可以为每个选项值创建范围,然后将它们链接起来。 http://guides.rubyonrails.org/active_record_querying.html#scopes

然后你可以做Post.investments.newest或你需要的任何变种,你就完成了。