我想就如何建立控制器动作和形式对另一资源的,它belongs_to的视图中创建一个资源的良好来源...我正在寻找一个好的Rails的源出于此
回答
按照正常方式设置控制器。您需要使用Rails的嵌套属性功能。这使您可以在使用一个表单创建其父项的同时创建子对象。
This is my go-to link for nested attributes。如果您运行的是Ruby 1.9.2,则需要进行的唯一更改位于setup_person
帮助程序中。 returning
已被弃用,所以你可以把它改成:
def setup_person(person)
person.tap do |p|
p.children.build if p.children.empty?
end
end
在典型的Rails风格,这将仅仅使用标准的控制器为每个资源的工作。
其他链接
http://weblog.rubyonrails.org/2009/1/26/nested-model-forms
http://jeffperrin.com/2009/06/04/rails-nested-forms-and-collection_select/
我没有那个文档我通常做一个网页来源,但我创建了一个gist,其中记录我做什么最经常在这里:https://gist.github.com/900241
该要点的前提是,你有一个具有许多项目角色的项目模型,并且您想要编辑项目表单中的许多项目角色。这几乎是经典的accepts_nested_attributes_for
情况,几乎任何讨论它的页面都会给你一个体面的写作。问题是,我见过的解决方案总是涉及到一些严重杂乱的强大的JavaScript,它们逃脱了整个表单视图,并将它扔到链接的onClick方法中。我最近想出了一个使用jQuery模板的更简洁清晰的方法。
当您移动到嵌套模型时,您无需对您的ProjectsController执行任何操作。一切正常在控制器级别工作,并且您甚至不需要ProjectRolesController。 (这就是为什么我不打扰他们的要点。)在模型层面,这只是标准的accepts_nested_attributes_for
。它在哪里变得有趣。
该项目形式有两个form_for块:一个呈现jQuery模板,另一个呈现项目角色形式。 jQuery模板反过来只是呈现项目角色形式(mmm DRY!),但是来自<script>
标记,并且具有空白项目角色。由于表单在脚本标记内,因此不会与项目表单一起提交,并且因为脚本类型为“text/x-jquery-tmpl”,所以这是完全有效的标记。
当用户点击“添加项目角色”时,它会触发一些jQuery,它会在模板中使用表单,用当前日期替换索引(这是唯一可以识别的项目角色),以及将其附加到表单的项目角色部分的末尾。
当用户点击项目角色旁边的“删除”时,它会检查项目角色是否为新记录,如果不是,则会在表单末尾附加一个“_delete”隐藏字段。无论哪种情况,它都会从DOM中删除项目角色div。
我知道罗宾已经把你和大多数受欢迎的文章关联起来......我仍然会推荐我的方法,它建立在这些其他方法中。这些旧文章中提到的JavaScript是我讨论的非常混乱的JavaScript。 – carpeliam 2011-04-03 07:14:45
- 1. 我正在寻找一个很好的资源ownerdrawn树视图
- 2. 的Android +就拿我正在寻找一个源代码,屏幕
- 3. 我正在寻找Objective-J的一些很好的文档J
- 4. 我正在寻找一个好的html编辑器为我的网站
- 5. 在Rails中寻找更好的URL
- 6. 寻找一些关于理解Bittorrent的好书/资源?
- 7. LL(1)语法,寻找一个好的,清晰的资源
- 8. 寻找一个开源的,基于Java的个性化引擎
- 9. 寻找一个使用ajax的rails例子,越简单越好
- 10. 正在寻找rubygem的其他资源
- 11. 正在寻找一个链接的词
- 12. 寻找webforms引擎的好资源?
- 13. 寻找学习ASP.NET MVC的好源码
- 14. 寻找一个好的Mootools Javascript教程
- 15. 寻找一个很好的parse.com替代
- 16. 我正在寻找关于chomp的一些澄清
- 17. 寻找一个好的基于PHP的Web计数器
- 18. 有没有另一个位置Rails正在寻找我的irbrc配置?
- 19. 我正在寻找一个特定类型的jQuery的滑块
- 20. 我正在寻找一个快速的方式在模板
- 21. 我正在寻找一个智能的工具提示弹出在JavaScript或jquery
- 22. 寻找一个很好的练习,以帮助我在多线程中更好
- 23. 寻找基于Linq的一个开源项目到SQL
- 24. FLEX:我正在寻找一个这样的组件
- 25. 我正在寻找重写一个特定的URl与PHP
- 26. 我正在寻找一个不错的当地购票系统
- 27. 我正在寻找一个使用pkcs的示例#5
- 28. 我正在寻找解码一个JavaScript文件的东西108,37,89,115,93,40,113,37
- 29. 寻找一本关于CURL库在C++下的好书
- 30. Rails为什么要为我的#collection#route寻找一个ID?
这比嵌套资源要好吗? – 2011-04-03 06:51:44
真的是一回事。在上面的例子中,你将有一个普通的'form_for'人,并且在这个表单中,你将能够创建x个孩子。假设你在你的模型中有正常的关联*和*声明'accep_nested_attributes_for',这将创建你想要的结构。 – 2011-04-03 06:53:28
您的'setup_person'方法中定义的'person'变量在哪里? – 2011-04-03 06:54:46