Ruby on Rails:ActiveRecord对象创建的确认页面
使用Ruby on Rails我想在创建ActiveRecord对象之前有一个确认页面。 在提交之前,用户将看到他们正在创建的项目的预览,并且将对象保存在数据库中
一种常见的模式;
- 用户访问/输入/新
- 用户输入详细信息并单击提交
- 用户被重定向到/ entry / confirm,显示条目并单击提交或编辑以更正错误
- 对象已保存
你会如何实现它?
解决此问题的另一个选项是通过虚拟确认属性添加到模型中。 这样,就不需要为此创建单独的操作:
class MyRecord < ActiveRecord::Base attr_accessor :confirmation validates_acceptance_of :confirmation, :on => :create end
现在,您的新对象将无法正确保存,因为确认字段上的validation将失败。 您可以检测到这种情况并提供如下内容:
<% form_for(@my_record) do |form| %> ... <%= form.check_box :confirmation %> Really create this record. <%= submit_tag('Confirm') %> <% end %>
我可能会为该模型的routes.rb文件添加一个“预览”操作:
map.resource :objects, :new => { :preview => :post }
您可以通过preview_object_url
the preview_object_url
命名路由来进行此preview
操作。 您需要以与create
操作相同的方式创建Object
,如下所示:
def preview @object = Object.new(params[:object]) end
然后,该页面将POST到create
动作,然后创建Object。 这很直接。
http://api.rubyonrails.org/classes/ActionController/Resources.html
一些选择
1-在会话中存储您要创建的对象,直到您点击确认页面,然后保存它
2-通过对象w /每个发布/提交从新 – >详细信息 – >确认
我可能会选择2,因为我不容易在会话中保存状态。
我不确定如何做到这一点(RoR对我来说是新的),但你可以将/ new的操作指定为/ confirm,然后调用create。
对?