我的 Rails 3 应用程序中有一个处方模型。我正在尝试找出允许复制记录的最佳方法,但允许用户在保存之前“查看”副本。
我已经阅读了一些关于 SO(例如这个)的问题/答案,它们解释了如何复制/克隆记录然后保存它 - 但没有一个解释如何在保存之前显示表单。
读取 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
抱歉,如果上面的代码完全错误,我正在努力解决它!我已经看到有人完全按照我想要通过克隆实现的目标 - 但不是在保存前进行编辑。
正在复制的用户在保存后将无权编辑记录。它纯粹用于初始数据输入。