Дублирование записи в Rails 3

У меня есть модель рецепта в моем приложении Rails 3. Я пытаюсь найти лучший метод, позволяющий дублировать записи, но позволяющий пользователю "просматривать" дубликат перед его сохранением.

Я прочитал ряд вопросов / ответов на SO (таких какэтот 1) которые объясняют, как дублировать / клонировать запись, а затем сохранить ее, но не объясняют, как показать форму перед сохранением.

Чтение Rails API являетсяклон метод доступен.

чтениедругие вопросы и ответы показывают, что это можно сделать, но нет примера кода, кроме:

new_record = old_record.dup

Код контроллера, с которым я сейчас работаю, выглядит следующим образом (модель не имеет каких-либо связей):

  # POST /prescriptions
  # POST /prescriptions.json
  def create
    @prescription = Prescription.new(params[:prescription])
    @prescription.localip = request.env['REMOTE_ADDR']
    @prescription.employee = @prescription.employee.upcase

    respond_to do |format|
      if @prescription.save
        format.html { redirect_to @prescription, notice: 'Prescription was successfully created.' }
        format.json { render json: @prescription, status: :created, location: @prescription }
      else
        format.html { render action: "new" }
        format.json { render json: @prescription.errors, status: :unprocessable_entity }
      end
    end
  end

Я собираюсь связать это действие клона с точки зрения:

<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>

Это так просто, как добавить действие в мой контроллер, как это?

def clone
 @prescription = Prescription.find(params[:id])
 @prescription.dup
 @prescription.save
end

Приносим извинения, если приведенный выше код является полностью неправильным, я пытаюсь разобраться с этим! Я виделкто то делать то, что я пытаюсь достичь с помощью клонирования, но не редактировать перед сохранением.

Пользователь, который копирует, не будет иметь права редактировать запись после сохранения. Это чисто для первоначального ввода данных.

Ответы на вопрос(3)

Ваш ответ на вопрос