Tôi có một mô hình theo toa trong ứng dụng Rails 3 của mình. Tôi đang cố gắng tìm ra phương pháp tốt nhất để cho phép sao chép các bản ghi, nhưng cho phép người dùng "xem lại" bản sao trước khi nó được lưu.Sao chép bản ghi trong Rails 3
Tôi đã đọc một số câu hỏi/câu trả lời trên SO (chẳng hạn như this) giải thích cách sao chép/sao chép bản ghi rồi lưu - nhưng không có cách nào giải thích cách hiển thị biểu mẫu trước khi lưu.
Đọc API Rails xuất hiện là phương pháp clone khả dụng.
Reading other questions và câu trả lời cho thấy là có thể được thực hiện nhưng không có mã ví dụ ngoài:
new_record = old_record.dup
Mã điều khiển Tôi hiện đang làm việc với là như sau (mô hình không có bất kỳ mối quan hệ):
# 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
tôi sẽ được liên kết đến hành động này clone từ vùng đang xem với:
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
Có đơn giản như việc thêm một hành động vào bộ điều khiển của tôi như thế này không?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
Xin lỗi nếu mã trên hoàn toàn sai, tôi đang cố gắng tìm hiểu! Tôi đã thấy someone làm chính xác những gì tôi đang cố gắng để đạt được với nhân bản - nhưng không phải với chỉnh sửa trước khi lưu.
Người dùng đang sao chép sẽ không có quyền chỉnh sửa bản ghi khi được lưu. Đó là hoàn toàn cho các mục nhập dữ liệu intial.
Tôi nghĩ rằng Rails đặt id thành nil khi sử dụng 'dup' trên mô hình, xử lý nó như mới. Xem http://apidock.com/rails/ActiveRecord/Core/dup –