我只使用过我的项目的静态默认作用域,而我最近想要创建一个动态作用域功能,用户可以点击按钮或使用下拉菜单更改他们查看的顺序名单。
到目前为止,我遇到了一些方法,例如使用取消绑定和设置新范围,并看到重新排序。我正在查看文档,但我也不确定如何让用户能够选择。我会在相应的HTML.erb文件中使用类似Link_to或button_to的东西吗?
在我的post.rb
文件中,它看起来像这样
default_scope { order(created_at: :desc) }
scope :ordered_by_title, -> { reorder(title: :asc) }
scope :ordered_by_reverse_created_at, -> { reorder(created_at: :ASC)}
我在默认情况下添加了其他范围,因为我假设有人会设置他们想要的范围,一旦用户点击或从渲染页面中选择它,视图就会调用/激活它们。
在post_controller.rb
def index
@posts = Post.all
end
在我的index.html.erb
视图中
我有以这种方式呈现的帖子列表,如果它不能与我想做的事情一起工作,有人可以告诉我更好的方法吗?
# <some way for user to choose those defined scopes and render the new page would go here>
<% @posts.each do |post| %>
<div class="media">
<div class="media-body">
<h4 class="media-heading">
<%= link_to post.title, post %>
<small> <%= post.body %> </small>
</h4>
</div>
</div>
<% end %>
答案 0 :(得分:0)
基本上有两种方法可以做到这一点:
纯粹的前端,使用js。如果你不想编写自己的js插件(例如DataTables),你可以使用一些现有的js插件和排序功能。您可能需要制作一个包含可用于此的不同属性的表格。
后端,使用ajax。编写自己的或使用filterrific之类的东西,它使用范围进行过滤和排序。