我有以下关系::discussion has_many :posts
,我将Post模型嵌套在讨论中。
讨论#show view有一个表单,允许用户在该讨论中创建帖子(回复)。
在我的更新操作中,我有:
if @discussion.update_attributes(params[:discussion])
format.html { redirect_to(@discussion, :notice => 'success') }
else
format.html { render :action => "edit" }
end
我使用field_for :posts, @post
来A)允许嵌套模型更新B)将表单限制为仅允许单个帖子创建。
但是,如果验证失败,页面将以可编辑的形式显示属于表单的所有帖子。我只想让用户重新编辑单个帖子。有没有一个很好的方法来实现这个目标?
如果验证失败,则不保存帖子,我不知道如何指出特定的新帖子。
我想也许我不应该通过讨论形式创建帖子,因为它就像是一层开销。但现在我已经嵌套了,我无法再转到帖子/新视图。
答案 0 :(得分:0)
这是我提出的仅允许单个帖子编辑的方式:
else
format.html {
@post = @discussion.posts.last
render :action => "edit"
}
有点hackish,黑客仍然可以发送被黑客入侵的POST消息并改变其他帖子。因此欢迎更好,更干净的解决方案。