2010-03-26 47 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