Rails clone copy or duplicate

后端 未结 4 1541
孤独总比滥情好
孤独总比滥情好 2020-12-31 10:19

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

4条回答
  •  隐瞒了意图╮
    2020-12-31 11:00

    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.

提交回复
热议问题