将额外结果添加到关联收集代理结果
Add extra result to Association Collection Proxy result
我有两个模型,
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to: user
end
我正在使用 formtastic gem
,请考虑 users_controller
的 edit
操作。表单的所有必需 user
和关联的 posts
属性将由 formtastic 表单
预填充
代码:
<%= semantic_form_for @user do |f| %>
<%= f.input :name %>
<%= f.inputs :posts do |p| %>
<%= p.input :title %>
<%= p.input :comment %>
<% end %>
<% end %>
例如,我有一个 @user
和两个 posts
关联。
在做 @user.posts
时,结果是这样的。
[
[0] #<Post:0x0000000aa53a20> {
:id => 3,
:title => 'Hello World',
:comment => 'Long text comes here'
},
[1] #<Post:0x0000000aa53a41> {
:id => 5,
:title => 'Hello World 2',
:comment => 'Long text comes here too'
}
]
因此表单将包含两个 posts 字段进行编辑。
实际上,我想要在这两个 post 之前还有一个空白的 post 表格。
这可以通过在第 0 个位置的 @object.posts
结果中插入一个新的空 post
对象来轻松实现。
所以,我想要的 @object.posts
结果应该完全像
[
[0] #<Post:0x0000000aa53a50> {
:id => nil,
:title => nil,
:comment => nil
},
[1] #<Post:0x0000000aa53a20> {
:id => 3,
:title => 'Hello World',
:comment => 'Long text comes here'
},
[2] #<Post:0x0000000aa53a41> {
:id => 5,
:title => 'Hello World 2',
:comment => 'Long text comes here too'
}
]
从 @user.posts
获得此结构的任何解决方案?
在 #edit
操作中执行如下操作:
def edit
#... your code
@user.posts << Post.new
end
我有两个模型,
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to: user
end
我正在使用 formtastic gem
,请考虑 users_controller
的 edit
操作。表单的所有必需 user
和关联的 posts
属性将由 formtastic 表单
代码:
<%= semantic_form_for @user do |f| %>
<%= f.input :name %>
<%= f.inputs :posts do |p| %>
<%= p.input :title %>
<%= p.input :comment %>
<% end %>
<% end %>
例如,我有一个 @user
和两个 posts
关联。
在做 @user.posts
时,结果是这样的。
[
[0] #<Post:0x0000000aa53a20> {
:id => 3,
:title => 'Hello World',
:comment => 'Long text comes here'
},
[1] #<Post:0x0000000aa53a41> {
:id => 5,
:title => 'Hello World 2',
:comment => 'Long text comes here too'
}
]
因此表单将包含两个 posts 字段进行编辑。
实际上,我想要在这两个 post 之前还有一个空白的 post 表格。
这可以通过在第 0 个位置的 @object.posts
结果中插入一个新的空 post
对象来轻松实现。
所以,我想要的 @object.posts
结果应该完全像
[
[0] #<Post:0x0000000aa53a50> {
:id => nil,
:title => nil,
:comment => nil
},
[1] #<Post:0x0000000aa53a20> {
:id => 3,
:title => 'Hello World',
:comment => 'Long text comes here'
},
[2] #<Post:0x0000000aa53a41> {
:id => 5,
:title => 'Hello World 2',
:comment => 'Long text comes here too'
}
]
从 @user.posts
获得此结构的任何解决方案?
在 #edit
操作中执行如下操作:
def edit
#... your code
@user.posts << Post.new
end