1

我遵循了几个教程来完成这项工作,但我无法获得可拖动的项目。这是我所做的:

添加gem 'acts_as_list'到我的 GemFile 并做了一个bundle install

添加<%= javascript_include_tag :defaults %>到我的 application.html.erb

在我的设施中添加了一个:integer名为position的列;

添加acts_as_list到我的设施模型中;

在我的设施模型中添加了排序方法:

 def sort
   @facilities = Facility.all
   @facilities.each do |f|
     f.position = params['f'].index(f.id.to_s) + 1
     f.save
   end
 end

在我看来添加了这个:

<ul id="facilities">
<% for facility in Facility.all %>
  <% content_tag_for :li, facility do %>
    <span class="handle">[drag]</span>
    <%= link_to h(facility.name), facility %>
  <% end %>
<% end %>
</ul>
<%= sortable_element("facilities", :url => sort_facilities_path, :handle => "handle") %>

将此添加到路线中:

  resources :facilities do  
    collection do  
      post :sort  
    end  
  end

但最后我只有一个普通的列表,不可拖动!我错过了什么?

谢谢!

4

1 回答 1

2

据我所知,acts_as_list它只处理 Rails 模型中的列表,这意味着事物的服务器端。为了使列表元素可拖动,您必须包含客户端库或插件,例如jQuery UI。gem 本身不(或至少不用于)包含您所描述的功能。

这个库或解决方案将

  1. 使您的元素可拖动和
  2. 为您提供回调以更新数据库中的订单(通常使用 AJAX 调用)
于 2011-06-11T13:21:19.887 回答