2010-03-26 39 views
1

我有一個網站上的鏈接,說「添加對象」。當我這樣做時,發出AJAX呼叫,並且我想要做以下事情:使用RESTful Rails,如何做一個插入和創建一個動作

1)如果會話中的容器不存在,則創建一個,否則使用現有的 2)將該對象添加到容器

我是RESTful設計的新手,想知道如何在Rails中最好地完成這個任務。特別是步驟#1。

當我進行AJAX調用時,URI的外觀如何?

------編輯------

我想的URI應該是類似/ myObject的/新。然後,在一個:的before_filter,是這樣的:

:before_filter check_for_container 

def check_for_container 
    if session[:container_id].nil? 
     C = MyContainer.new 
     session[:container_id] = C.id 
    end 
end 

在我myContainer中控制器,新方法具有相當多的自定義代碼來生成序列號,再用懶刪除容器等我如何重構現有的代碼?

回答

1

什麼類型的容器? 您可以使用類似:

@container ||= [] 

如果容器 - 簡直是陣列,或使用一張ID容器是數據庫記錄:

@container = Container.find_or_create(id) 

@container = Container.find_or_create_by_field(:field=>id, :other_filed=>val....) 

,然後添加對象到容器

+0

看到我的編輯... – Dex 2010-03-28 06:55:24

+0

替換 C = My Container.new 通過 C = MyContainer.create (新 - 創建一個對象,但創建對象和數據庫記錄) 您可以使用會話對象爲容器,如果它只能容納少數對象ID,否則你可以像memcahed一樣使用內存中的鍵值存儲 - 快速,並且您可以設置容器的TTL。 – potapuff 2010-03-30 13:42:43