我希望用户能够通过两个下拉列表中的选项过滤索引视图中的帖子。
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来构建嵌套属性(反馈,众筹,想法)。
如果我以任何方式不清楚或缺少信息,请告知我。
答案 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或你需要的任何变种,你就完成了。