2012-03-26 59 views
0

我一直在引用来自Railscast的关于Nested Model Form的这个令人敬畏的教程。一切都很好。但是,我注意到我需要所有添加/删除的Ajax功能。用于CRUD的嵌套模型的Ajax

我有一个3级嵌套模型。 Country,States,Shops。例如:

United States 
|__ California 
    |__ Shop A 
    |__ Shop B 
    |__ (Add new shop) 
|__ New York 
    |__ Shop C 
    |__ Shop D 
    |__ (Add new shop) 
(Add new state) 

我已经阅读并搜索了所有可用的教程,但似乎没有什么符合我的目的。他们主要提供动态添加/删除项目的方式,但不与服务器交互。我希望一旦单击链接Add...,用户将能够输入信息并单击该特定子窗体的Submit按钮,并将其保存到数据库中。与Remove一样,只需点击x即可立即删除。

如果创建一个新的Country也可以被ajaxed,那将会很棒。但目前,我正在使用两步法。首先,用户创建Country,单击Next时,它将被保存到数据库并重定向到编辑页面。在编辑页面的视图中,它检查是否.new_record?,然后显示其余的子窗体。

您只能从上面给出的链接代码中引用您的建议。这一点是足够的。你的帮助非常大,非常感谢,因为我已经偶然发现了几个星期。

非常感谢!

回答

0

几件事情要考虑。如果您正在使用RESTful操作(默认)执行此操作,那么当用户单击“添加”时,它将不得不发送一个method =>:post。但是当用户点击“X”时,它将不得不发送一个方法=>:delete。当然,一个正常的选择商店C将是一个方法=>:get。由于http方法附加到表单中,您必须动态切换 - 在Javascript中?除非您可以覆盖路由文件中的默认静态动词。

同样,添加,取出和删除通常都在控制器上使用不同的方法,因此您必须手动调用这些方法。

这似乎意味着你应该放弃对表单或选择标签的任何使用,并简单地构建一个ajaxy列表,并适当地添加和设置你的添加和删除链接。