我为CRUD一个对象实现了一个标准的Rails(和RESTful)进程。
我需要的唯一自定义(或“超出约定的配置”)如下:
在标准的修改表单后,我会显示“预览”而不是显示表单(这只是动作“显示” “在视图中进行一些调整并使用”object.status = preview“)此时我需要允许用户使用一个简单的按钮”确认“或”保存“此预览对象。 如果用户再次提交编辑表单(或同一对象)但又不必再次查看。只需点击“确认”按钮即可。
(在更新操作中,我检查object.status是否为“预览”,如果是,我认为它已经确认,我会显示确认消息而不是预览)。
我唯一缺少的是“show”视图中的“确认”按钮 到 PUT @object。
我该如何实施?
PS:我知道最好的做法是在编辑视图中显示预览(就像在stackoverflow.com中一样),但在我的应用程序中,设计非常重要,所以我需要提供尽可能接近现实的预览。答案 0 :(得分:3)
您可能不需要其他操作,只需要另一个视图。基本上流程是这样的:
这是控制器代码,因为它是最复杂的部分:
# controller
def show
@widget = Widget.new
end
def edit
@widget = Widget.find(params[:id])
end
def update
previewed = params.delete(:previewed)
@widget = Widget.find(params[:id])
@widget.attributes = params
if @widget.valid? && previewed
@widget.save!
redirect_to widget_path(@widget), :notice => 'Yay'
elsif @widget.valid?
render :preview
else
render :edit
end
end
答案 1 :(得分:1)