Ruby on Rails: страница подтверждения для создания объекта ActiveRecord - PullRequest
7 голосов
/ 15 января 2009

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

Общий шаблон;

  • Пользователь посещений / запись / новый
  • Пользователь вводит данные и нажимает кнопку "Отправить"
  • Пользователь перенаправлен на / entry / подтвердит, который отображает запись и нажимает кнопку отправить или изменить для исправления ошибок
  • Объект сохранен

Как бы вы это реализовали?

Ответы [ 4 ]

5 голосов
/ 16 января 2009

Я бы, вероятно, добавил действие "Предварительный просмотр" в файл rout.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

5 голосов
/ 15 января 2009

Еще один вариант решения этой проблемы - добавление атрибута виртуального подтверждения в вашу модель. Таким образом, для этого не нужно создавать отдельное действие:


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 %>
4 голосов
/ 15 января 2009

Несколько вариантов

1 - сохраняйте объект, который вы хотите создать в сеансе, пока не нажмете страницу подтверждения, затем просто сохраните его

2 - обойти объект с каждым сообщением / отправить из нового -> подробности -> подтвердить

Я бы, наверное, выбрал 2, так как я не склонен сохранять состояние в сеансе.

0 голосов
/ 15 января 2009

Я не уверен, как это сделать (RoR является новым для меня), но вы можете просто указать действие для / new as / Подтвердить, а затем оно вызывает create.

правый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...