mmc*_*ath 7 ruby activerecord ruby-on-rails
使用Ruby on Rails我想在创建ActiveRecord对象之前有一个确认页面.在提交之前,用户将看到他们正在创建的项目的预览,并且将对象保存在数据库中
一种常见的模式;
你会如何实现它?
解决此问题的另一个选项是将虚拟确认属性添加到模型中.这样,就不需要为此创建单独的操作:
class MyRecord < ActiveRecord::Base
attr_accessor :confirmation
validates_acceptance_of :confirmation, :on => :create
end
Run Code Online (Sandbox Code Playgroud)
现在,您的新对象将无法正确保存,因为确认字段上的验证将失败.您可以检测到这种情况,并提供如下内容:
<% form_for(@my_record) do |form| %>
...
<%= form.check_box :confirmation %> Really create this record.
<%= submit_tag('Confirm') %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我可能会为该模型的routes.rb文件添加一个"预览"操作:
map.resource :objects, :new => { :preview => :post }
Run Code Online (Sandbox Code Playgroud)
您可以preview通过POST preview_object_url命名路由来实现此操作.你需要以Object与create动作相同的方式创建它,如下所示:
def preview
@object = Object.new(params[:object])
end
Run Code Online (Sandbox Code Playgroud)
然后,此页面将POST到create操作,然后创建对象.这很直接.
http://api.rubyonrails.org/classes/ActionController/Resources.html