Используя Ruby on Rails, мне нужна страница подтверждения перед созданием объекта ActiveRecord. Пользователь увидит предварительный просмотр создаваемого элемента перед отправкой, а также объект, сохраняемый в базе данных.
Обычный узор;
Как бы вы это реализовали?





Я не уверен, как это сделать (RoR для меня новичок), но вы можете просто указать действие для / new как / confirm, а затем вызвать create.
Верно?
Несколько вариантов
1- сохраните объект, который вы хотите создать, в сеансе, пока вы не нажмете страницу подтверждения, а затем просто сохраните его
2- обойти объект с каждым сообщением / отправкой из нового -> подробности -> подтвердить
Я бы, вероятно, выбрал 2, так как я не склонен сохранять состояние во время сеанса.
Другой вариант решения этой проблемы - добавление атрибута виртуального подтверждения в вашу модель. Таким образом, для этого не нужно создавать отдельное действие:
class MyRecord < ActiveRecord::Base
attr_accessor :confirmation
validates_acceptance_of :confirmation, :on => :create
end
Теперь ваш новый объект не будет сохранен правильно, потому что проверка в поле подтверждения не удастся. Вы можете обнаружить эту ситуацию и представить что-то вроде этого:
<% 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, разместив по почте именованный маршрут preview_object_url. Вам нужно будет создать Object таким же образом, как и в вашем действии create, например:
def preview
@object = Object.new(params[:object])
end
Эта страница затем отправит POST в действие create, которое затем создаст объект. Это довольно просто.
http://api.rubyonrails.org/classes/ActionController/Resources.html