Powielanie rekordu w Rails 3
Mam model recepty w mojej aplikacji Rails 3. Próbuję wypracować najlepszą metodę pozwalającą na duplikowanie rekordów, ale pozwalającą użytkownikowi „przejrzeć” duplikat przed jego zapisaniem.
Przeczytałem kilka pytań / odpowiedzi na temat SO (takich jakto jeden), który wyjaśnia, jak powielić / sklonować rekord, a następnie zapisać go - ale żaden z nich nie wyjaśnia, jak wyświetlić formularz przed zapisaniem.
Czytanie interfejsu API Rails pojawia sięklon metoda jest dostępna.
Czytanieinne pytania i odpowiedzi pokazują, że można to zrobić, ale nie ma przykładowego kodu poza:
new_record = old_record.dup
Kod kontrolera, z którym obecnie pracuję, jest następujący (model nie ma żadnych relacji):
# 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
Będę linkował do tej akcji klonowania z widoku za pomocą:
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
Czy to tak proste, jak dodanie akcji do mojego kontrolera w ten sposób?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
Przepraszam, jeśli powyższy kod jest całkowicie błędny, staram się go obejść! widziałemktoś Zrób dokładnie to, co próbuję osiągnąć dzięki klonowaniu - ale nie przed edycją przed zapisaniem.
Duplikujący użytkownik nie będzie miał uprawnień do edycji rekordu po zapisaniu. Jest to wyłącznie do wstępnego wprowadzania danych.