|
|
1
78
|
|
|
2
49
更新 :这个答案适用于Rails 2,或者如果您有需要自定义逻辑的特殊约束。如其他地方所讨论的,可以使用字段\u很好地处理简单的情况。Rails在这方面帮不了你多少忙。它违反了标准的视图约定,因此您必须在视图、控制器甚至路由中进行变通。那可不好玩。 在铁路上处理多模型形式的关键资源是 Stephen Chu's params-foo series Nested Object Forms 如果你定义一种你正在编辑的单一资源,比如一张照片集,那就容易多了。Photoset可以是一个真实的ActiveRecord类型的模型,也可以只是一个接受数据并抛出错误的facade,就好像它是一个ActiveRecord模型一样。 现在,您可以编写一个视图窗体,如下所示:
你的模型应该验证每个进来的子照片并聚合它们的错误。你可能想退房 a good article on how to include Validations in any class . 它可能看起来像这样:
通过为Photoset使用facade模型,您可以保持控制器和视图逻辑简单明了,为专用模型保留最复杂的代码。这段代码可能不会开箱即用,但希望它能给您一些想法,并为您指出解决问题的正确方向。 |
|
|
3
21
Rails确实有办法做到这一点——我不知道它是什么时候引入的,但这里基本上是这样描述的: http://guides.rubyonrails.org/form_helpers.html#using-form-helpers 在没有父对象的情况下,适当地修改配置需要一些技巧,但这似乎是正确的(这与gamov的答案基本相同,但更简洁,不允许“新”记录与“更新”记录混合在一起):
在您的控制器中,您将在
|
|
4
17
您可以使用“model name[]”语法来表示多个对象。 在视图中,使用“photo[]”作为模型名称。
这将像您描述的那样填充输入字段。 在控制器中,可以进行批量更新。
|
|
|
5
11
实际上,正如Turadg所提到的,如果您混合使用新的;在格伦的回答中已有的记录。
如果你问我这是相当难看,但这是唯一的方法,我发现编辑多个记录,同时混合新的和现有的记录。 还有一个注意事项:您仍然需要分别处理控制器中的新记录和现有记录(检查是否:id.present?) |
|
cluster1 · 采取独立的新行动的好处是什么? 10 月前 |
|
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 10 月前 |
|
|
Fred Willmore · Rails控制器不呈现任何模板 1 年前 |
|
|
Diogo Amaral · 实现API请求的正确方式 1 年前 |
|
|
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
|
|
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
|
Flávio · 基于另外两个生成数组 1 年前 |