Rails jQuery排序无法保存
Rails jQuery sortable unable to save
我试图使我的表排序(拖放)使用jQuery,我遇到的问题是保存新的排序表,然后发布给其他用户或当浏览器刷新。
我用:
gem"acts_as_list"Rails 3.2.17ruby 1.9.3p484
有更好的方法吗?
我的排序和显示方法在我的控制器
def排序@episodes = current_user.episodes_for(@show)。每做一集一集。Position = params['episode'].index(episode.id.to_s) + 1episode.save结束渲染:nothing =>true
结束 def show
@episodes = current_user.episodes_for(@show)
@episodes.order('episode.position ASC')
@episode = @episodes.where(id: params[:id]).first
end
我Javascript <script>
$(window).load(function() {
$("#sortthis").sortable({
axis: 'y',
placeholder: 'ui-state-highlight',
cursor: 'move',
dropOnempty: false,
scroll: true,
opacity: 0.4,
update: function(event, ui){
var itm_arr = $("#sortthis").sortable('toArray');
var pobj = {episodes: itm_arr};
$.post("/episodes/sort", pobj);
}
});
});
</script>
我想在views中排序的表:
<tbody id='eps'>
<tr>
<th>Title</th>
<th>#</th>
<th>Season</th>
<th>Download?</th>
<th>Shared?</th>
<th>Length</th>
<th>Status</th>
<th></th>
</tr>
<% for episode in @episodes %>
<tr>
<td id="eps_<%= episode.id %>", width="20%"><%=h episode.title %></td>
<td id="eps_<%= episode.id %>"><%=h episode.number %></td>
<td id="eps_<%= episode.id %>"><%=h episode.season %></td>
<td id="eps_<%= episode.id %>"><%=h episode.is_downloadable %></td>
<td id="eps_<%= episode.id %>"><%=h episode.shared_with_dev %></td>
<td id="eps_<%= episode.id %>"><%=h episode.length %></td>
<td>
<% if episode.video %>
<%= link_to 'Replace Video', new_show_episode_video_path(episode.show, episode) %>
<% else %>
<%= link_to 'Upload Video', new_show_episode_video_path(episode.show, episode) %>
<% end %>
</td>
<td>
<%= link_to "View", [episode.show, episode] %>
<%= link_to "Edit", edit_show_episode_path(episode.show, episode) if permitted_to? :update, episode %>
<%= link_to "Delete", show_episode_path(episode.show, episode), :confirm => 'Are you sure?', :method => :delete if permitted_to? :delete, episode %>
</td>
</tr>
<% end %>
任何帮助都将非常感激!
我想明白了,做了以下修改:
视图:
<tr id="<%= episode.id %>">
和new controller
def sort
Episode.all.each do |e|
if position = params[:episodes].index(e.id.to_s)
e.update_attribute(:position, position + 1) unless e.position == position + 1
end
end
render :nothing => true, :status => 200
end
最后添加到我的模型:
acts_as_list
default_scope order('position')
如果有人有类似的问题,请告诉我。 相关文章:
- jQuery UI:如何保存"可排序”;
- 如何在排序前保存数组的副本
- 如何在 select2() 字段中保存排序顺序
- JQuery UI 可排序和 Laravel,将列表保存到数据库
- 保存动态创建的 jQuery 连接可排序列表的顺序
- 如何将 JQuery UI 可排序表位置保存到 MySQL 数据库
- 如何保存排序顺序
- 将表排序保存在本地存储中
- 在MongoDB中保存和排序日期
- 如何在角度UI中加载保存的可排序对象
- Rails jquery 可排序未正确保存位置
- 如何使用ajax保存Drupal7中重新排序的节点
- 使用Laravel 4+从jQuery/ajax保存串行可排序数据
- 数据表重新排序保存到数据库
- 使用angular ui sortable和angular fire可以在排序时将新订单保存到数据库中
- jquery可排序ui保存tr位置
- jQuery保存排序列表
- Rails jQuery排序无法保存
- 使用jquery TableDnD插件拖放表行,如何使一些ros不可拖放并保存已排序的行
- 保存排序顺序隐藏字段与可排序的jQuery插件