У меня есть модель предписания в моем приложении 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
Извините, если приведенный выше код совершенно неверен, я пытаюсь понять это! Я видел, как кто-то делал именно то, чего я пытаюсь достичь с помощью клонирования -, но не с редактированием перед сохранением.
Пользователь, который дублирует, не будет иметь разрешения на редактирование записи после ее сохранения. Это чисто для первоначального ввода данных.