我有2個模型,用戶和項目。現在,它們通過has_and_belongs_to_many連接(多對多)連接。用戶有一個項目列表,這個列表可以通過ajax排序。但我想存儲這個訂單。我該如何發送此訂單並以適當方式存儲?如何在Ajax列表中存儲項目的順序?
-1
A
回答
1
要sorteable列表我jQueryUI的工作 - >http://jqueryui.com/demos/sortable/
以獲取列表:
var projects = Array();
var j=0;
$("#sortable li").each(function(i, item){
projects[j] = $("#"+item.id).html();
j++;
});
var data = {"list": projects};
然後我用Ajax
1
發送數據,你必須考慮項目的順序在用戶列表上作爲用戶和項目之間的關係的屬性。每對用戶/項目都有一個屬性「訂單」,對吧?
因此,信息應該放在中介表(projects_users)中。
但是,因爲你不能屬性添加到have_and_belongs_to_many鏈接表,你應該改變它的東西,如:
class User
has_many :allocations
has_many :projects, :through => :allocations
end
class Project
has_many :allocations
has_many :users, :through => :allocations
end
,並在分配表中的遷移應該是這樣的:
create_table :allocations do |t|
t.integer :project_id
t.integer :user_id
t.integer :order
end
這樣,對於給定用戶分配給每個項目,您可以指定訂單。
我希望這會有所幫助。
1
你可以做的是循環遍歷所有使用Javascript的項目,並使用AJAX將一個ID數組發送到Rails動作(如Manu Mora示例所示)。這些參數會是這個樣子:
project_ids: 1,3,5,2,4
id: 1
然後在你的控制器動作,你可以做到以下幾點:
@user = User.find(params[:id])
@user.update_attributes(:project_ids => params[:project_ids].split(","))
我不知道如何發送參數的方式,它是一個數組自動,所以我使用split
。我不知道使用HABTM時訂單是否合適。如果不是,則應使用has_many :through
,並在'訂單'或'位置'列中使用。我展示給你的方式不會奏效,因爲你還需要設置訂單欄。
希望它有效。 :)
相關問題
- 1. 定義列表中的項目順序
- 2. DynamoDB:如何存儲項目列表
- 3. 如何在MySQL中存儲每個用戶的項目列表?
- 4. 存儲在存儲桶列表中的項目數量
- 5. 使用localStorage存儲列表的順序
- 6. 我如何確保列表中的項目是順序的?
- 7. 如何獲取列表中項目的順序?
- 8. 如何使循環順序更改列表中的項目?
- 9. 如何更新存儲在mysql表中的行的順序?
- 10. 如何將列表框項目順序維護到DataGridView中
- 11. 無法按排序順序保存列表框項目
- 12. 如何在順序鍵中順序掃描Redis Keyspace存儲?
- 13. 如何使用jQuery存儲數組中的列表項目
- 14. 如何在java中存儲,排序和分組項目(列表/設置/映射)?
- 15. Flex Spark列表組件項目順序
- 16. 列表項目排序順序 - TFS工作項目
- 17. 如何在mongo字段中存儲項目符號列表或值列表
- 18. 添加到列表中的項目不在預期的順序
- 19. 如何使用AngularJS更改列表項目的順序?
- 20. 如何更改Xcode 4 Organizer存儲庫列表中存儲庫的順序?或最初選擇的存儲庫?
- 21. 如何存儲項目的
- 22. 如何在AS3中以不同的順序顯示我的php列表項目?
- 23. OrderByDescending不會爲了在列表中更改項目的順序
- 24. Angular 2如何從存儲中刪除列表項目
- 25. 如何從列表視圖中存儲所選項目?
- 26. 如何在項目中存儲數據
- 27. 如何根據此項目順序將項目添加到列
- 28. Ajax無法處理無序列表中的列表項目
- 29. 按字母順序排列列表框中的組項目
- 30. 鏈接列表中的Foreach項目是否按順序排列項目?
該表應該有一個ID權?我認爲你創建HABTM表時只使用:id => false。 – RobinBrouwer 2011-01-08 16:21:03