Ruby on rails 在一个控制器中对多个模型进行排序
我正在使用RubyonRails 5.2.3和Mongoid7.0 我需要能够在一个文件夹中对多个模型(项目和文本)进行排序。 现在只对项目或文本进行排序,有必要设置相互之间的位置Ruby on rails 在一个控制器中对多个模型进行排序,ruby-on-rails,mongoid,jquery-ui-sortable,Ruby On Rails,Mongoid,Jquery Ui Sortable,我正在使用RubyonRails 5.2.3和Mongoid7.0 我需要能够在一个文件夹中对多个模型(项目和文本)进行排序。 现在只对项目或文本进行排序,有必要设置相互之间的位置 class UsersController < ApplicationController def sort params[:item].each_with_index do |id, index| Item.where(id: id).update_all(position: inde
class UsersController < ApplicationController
def sort
params[:item].each_with_index do |id, index|
Item.where(id: id).update_all(position: index + 1)
end
head :ok
end
def admin
@user_items = @user.user_feed
end
end
class UsersController
admin.html.erb
<div id="items" data-url="<%= sort_users_path %>">
<%= render partial: 'users/user_item', collection: @user_items %>
</div>
_用户_item.html.erb
<% if user_item[:title].present? %>
<div id="item_<%= user_item[:id] %>">
<%= user_item[:position] %>
</div>
<% end %>
<% if user_item[:text].present? %>
<div id="item_<%= user_item[:id] %>">
<%= raw user_item[:position] %>
</div>
<% end %>
User.rb
def user_activity
activity_items = []
items.each do |item|
activity_item = {}
activity_item[:id] = item.id
activity_item[:url] = item
activity_item[:title] = item.title
activity_item[:position] = item.position
activity_item[:item_link] = item.url
activity_items << activity_item
end
texts.each do |text|
activity_item = {}
activity_item[:id] = text.id
activity_item[:url] = text
activity_item[:text] = text.text
activity_item[:position] = text.position
activity_items << activity_item
end
activity_items.sort_by! { |activity_item| activity_item[:position] }
activity_items
end
def user_feed
activity_items = user_activity
activity_items.sort_by! { |activity_item| activity_item[:position] }
activity_items
end
def用户活动
活动项目=[]
项目。每个do |项目|
活动_项={}
活动\项目[:id]=项目id
活动\项目[:url]=项目
活动\项目[:标题]=项目.title
活动\项目[:位置]=项目位置
活动\u项[:项\u链接]=项.url
活动项目只需添加文本。其中(id:id)。全部更新(位置:index+1)
def sort
params[:item].each_with_index do |id, index|
Item.where(id: id).update_all(position: index + 1)
Text.where(id: id).update_all(position: index + 1)
end
head :ok
end