Ruby on Rails: страница подтверждения для создания объекта ActiveRecord

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

Обычный узор;

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
3 821
4

Ответы 4

Я не уверен, как это сделать (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

Другие вопросы по теме