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

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

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

Чтение API Rails показывает, что доступен метод clone .

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

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

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

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

9
задан Community 23 May 2017 в 11:46
поделиться