我正在尝试根据Ryan Bates的railscast在编辑表单中设置预览按钮。有两个按钮[编辑]和[更新]。
当用户单击预览按钮时,将调用控制器中的“更新”功能。如果我只是根据文章表的查找设置@article变量(按照下面的控制器),预览按钮会将表单中的值重置为保存的数据,但我会丢失编辑内容。
有没有办法让我有更新的预览模式?新的工作正常,只有编辑有这个问题。
def update
@article = Article.find(params[:id])
if params[:preview_button] || !@article.update_attributes(params[:article])
render :action => 'edit'
else
respond_to do |format|
format.html { redirect_to(@article, :notice => 'Article was successfully updated.') }
end
end
end
编辑:我尝试使用以下代码
if params[:preview_button] || !@article.update_attributes(params[:article])
@article = Article.new(params[:article])
render :action => 'edit'
else
保留数据,但是有副作用。单击[http:// localhost:3000 / articles / 4 / edit]中的预览按钮重定向到[http:// localhost:3000 / articles / 4]再次单击此处转到新视图[http:// localhost: 3000 /篇。
答案 0 :(得分:1)
if params[:preview_button] || !@article.update_attributes(params[:article])
只有在预览的情况下,预订的param不存在正在更新的文章。
你想要这样的东西:
@article.attributes = params[:article]
if params[:preview_button] or !@article.save
render :action => 'edit