Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在rails中对文章进行排序并在AJAX中重新加载?_Jquery_Ruby On Rails_Ajax_Sorting - Fatal编程技术网

Jquery 如何在rails中对文章进行排序并在AJAX中重新加载?

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, -&

这是一个很好的起点,但我不确定如何从视图中调用这些方法,也不知道如何从视图中更新内容。其思想是nav将在按日期升序、按日期降序、向上投票和向下投票之间进行排序。我用演技当可供选择的宝石 我对我的模型最好的猜测是

#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>

我的应用程序在这里

计划使用链接。我试试看,然后回来汇报。谢谢