Jquery 如何在rails中对文章进行排序并在AJAX中重新加载?
这是一个很好的起点,但我不确定如何从视图中调用这些方法,也不知道如何从视图中更新内容。其思想是nav将在按日期升序、按日期降序、向上投票和向下投票之间进行排序。我用演技当可供选择的宝石 我对我的模型最好的猜测是Jquery 如何在rails中对文章进行排序并在AJAX中重新加载?,jquery,ruby-on-rails,ajax,sorting,Jquery,Ruby On Rails,Ajax,Sorting,这是一个很好的起点,但我不确定如何从视图中调用这些方法,也不知道如何从视图中更新内容。其思想是nav将在按日期升序、按日期降序、向上投票和向下投票之间进行排序。我用演技当可供选择的宝石 我对我的模型最好的猜测是 #Message.rb scope :recent, -> { order(created_at: :desc) } scope :upvoted, -> { order(:cached_votes_up => :desc) } scope :oldest, -&
#Message.rb
scope :recent, -> { order(created_at: :desc) }
scope :upvoted, -> { order(:cached_votes_up => :desc) }
scope :oldest, -> { order(created_at: :asc) }
def self.sort_by(sort_param)
case sort_param
when 'recent'
recent
when 'upvoted'
upvoted
when 'oldest'
oldest
else
all
end
end
我不知道如何调用这个方法(可能是从索引中调用),也不知道如何使用AJAX更新视图 你应该阅读指南 并更好地理解AJAX 你将如何触发该方法?用户是否会以某种方式单击按钮或链接 这是一个如何将表单的提交按钮绑定到ajax操作的示例 基本上,
form按钮submit
将执行users\u controller\create
,该按钮将在create.js.erb
$("<%= escape_javascript(render @user) %>").appendTo("#users");
$(“”)。附加到(“用户”);
正如您从本例中看到的,优点在于,由于这是一个js.erb
文件,您可以使用变量@user
,并将其附加到#user
div
您可以搜索rails ajax以获取更多信息,还可以观看youtube视频,了解ajax
其思想是AJAX代表异步javascript和xml请求,现在我们使用json而不是xml。客户端将发送请求,服务器将发送响应。信息通过json发送,而客户端用作脚本语言json
对你来说,我建议。确定触发
请求的链接
或按钮
,然后按照指南设置rails ajax
,配置控制器#操作
以响应js
,并创建js.erb
文件,以便您可以重新排序页面上的信息。您可以使用在控制器#操作
中重新排序的项目列表创建变量实例,然后使用javascript
将该项目列表
附加到html
中
将范围添加到我的模型中
#Message.rb
scope :recent, -> { order("created_at DESC") }
scope :oldest, -> { order(created_at: :asc) }
scope :upvoted, -> { order(:cached_votes_up => :desc) }
scope :downvoted, -> { order(:cached_votes_down => :desc) }
使用对索引的渲染操作在控制器中定义方法
#messages_controller.rb
def recent
@messages = Message.recent
render action: :index
end
def oldest
@messages = Message.oldest
render action: :index
end
def upvoted
@messages = Message.upvoted
render action: :index
end
def downvoted
@messages = Message.downvoted
render action: :index
end
以及通过集合创建相应的路由
collection do
get :recent
get :oldest
get :upvoted
get :downvoted
end
我的导航在我的视野里
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<%= link_to "Recent", recent_messages_path, class: "nav-link active" %>
</li>
<li class="nav-item">
<%= link_to "Oldest", oldest_messages_path, class: "nav-link active" %>
</li>
<li class="nav-item">
<%= link_to "Upvoted", upvoted_messages_path, class: "nav-link active" %>
</li>
<li class="nav-item">
<%= link_to "Downvoted", downvoted_messages_path, class: "nav-link active" %>
</li>
</ul>
-
-
-
-
我的应用程序在这里计划使用链接。我试试看,然后回来汇报。谢谢