2011-06-11 51 views
1

我遵循了幾個教程來完成這項工作,但我無法獲得可拖動的項目。 這是我做的:acts_as_list - 不拖動!

在我的Gemfile添加gem 'acts_as_list',做了bundle install

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

加入:integer列名爲位置我的設施;

在我的設施模型中增加了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 

但最終

在我的設施模型添加的排序方法我只有一個普通的列表,不可拖動! 我錯過了什麼?

謝謝!

+0

有你必須添加到你的模型,比如'acts_as_list'或其他東西。我從來沒有使用過這個,但我現在正在使用awesome_nested_set,這就是我如何將所有漂亮的樹行爲拖入模型... – jaydel 2011-06-11 13:06:04

+0

是的,正如我寫的,我「在我的設施模型中添加了acts_as_list;」 – Abramodj 2011-06-11 13:19:24

+0

啊,是的,對不起,我錯過了。我正在掃描的代碼珍聞,將顯示在行動... – jaydel 2011-06-11 13:40:06

回答

2

據我所知,acts_as_list只處理Rails的模型列表,這意味着服務器端的東西。爲了使列表元素可拖動,您必須包含一個客戶端端庫或插件,如jQuery UI。寶石本身沒有(或者至少沒有用到)包括你描述的功能。然後

這個庫或解決方案將

  1. 讓你的元素拖動和
  2. 爲您提供一個回調在DB更新訂單(通常使用AJAX調用)
+0

哦謝謝,我誤解了寶石的功能 – Abramodj 2011-06-11 13:43:50

+0

是的!解決方案是下載jQuery UI插件,並使用<%= javascript_include_tag「jquery-ui-1.8.13.custom.min.js」%>調用它。 – Abramodj 2011-06-11 13:57:41