I have a nested form and once I save, I want to be able to click a link on the show page to copy or clone that form and open a new one. From there I should be able to make e
I found these answers a little hard to follow. One answer shows this:
@post = Post.new(@existing_post.attributes)
which will not work as it will also pass the id, and timestamp values. I used .dup to fix that and I show that in my answer.
Here's how I achieved creating a new item from an existing item.
The model is for a Product, the controller Products_Controller.rb. We're going to add a new action to the controller called COPY and we're going to link to it from the SHOW view on an existing Product and render a filled out NEW view ready to be edited and saved.
First we create a route for the copy action in routes.rb
resources :Products do
member do
get 'copy'
end
end
Then a copy action in Products_controller.rb
def copy
@source = Product.find(params[:id])
@product = @source.dup
render 'new'
end
Now we need to add a Link to the SHOW view to call our copy action.
<%= link_to "copy", copy_product_path(params[:id]) %>
This worked for me. I hope it works for you and that the answer is simple enough to follow.