Hi Segio

This is exactly what I want to do :-)

Sergio:
Anyway, you can use active_scaffold_duplicate gem, it adds :duplicate 
action, 
which can be setup to create new record on click, or 
*open a form prefilled with cloned record.* If you have uniqueness 
validation, you need to generate new 
unique value for column or open form instead of duplicating on click. 

Gonna try it out now :-)

On Monday, 13 March 2017 19:42:57 UTC+8, Sergio Cambra wrote:
>
> El sábado, 11 de marzo de 2017 4:29:10 (CET) Chee Chong Hwa escribió: 
> > HI Sergio 
> > 
> > Trace from rails server 
> > Started GET "/tasks/26/clone?adapter=_list_inline_adapter" for ::1 at 
> > 2017-03-11 
> >  11:26:59 +0800 
> >   ActiveRecord::SchemaMigration Load (0.0ms)  SELECT 
> `schema_migrations`.* 
> > FROM 
> > `schema_migrations` 
> > Processing by TasksController#clone as JS 
> >   Parameters: {"adapter"=>"_list_inline_adapter", "id"=>"26"} 
> >   Task Load (15.6ms)  SELECT  `tasks`.* FROM `tasks` WHERE `tasks`.`id` 
> = 
> > 26 LIM 
> > IT 1 
> >    (0.0ms)  BEGIN 
> >   Task Exists (0.0ms)  SELECT  1 AS one FROM `tasks` WHERE 
> `tasks`.`task` = 
> > BINA 
> > RY 'Activate Authentication' LIMIT 1 
> >    (0.0ms)  ROLLBACK 
> > No template found for TasksController#clone, rendering head :no_content 
> > Completed 204 No Content in 10278ms (ActiveRecord: 15.6ms) 
>
> Task is loaded, then there is a query looking for tasks.task = 'Activate 
> Authentication'. I guess you have some uniqueness validation on task 
> column. 
>
> Also, you have no view for clone action, you should add one to render new 
> task, or display errors, for example using flash. Or you can redirect to 
> index 
> action. You should check if save worked, if failed then you can check 
> new_task.errors for validation errors: 
>
> if new_task.save 
>   render or redirect 
> else 
>   flash.now[:error] = ... 
>   render ... 
> end 
>
> If you are going to redirect when saving new task fails, you should use 
> flash[:error] instead of flash.now 
>
> Another thing, you shouldn't use GET requests for actions which save to 
> database, I would use PUT (change route to put and add :method => :put to 
> action_link). If action renders a js view, add :position => false to 
> action_link, default :position is :replace which expects action to return 
> html 
> to display. 
>
> Anyway, you can use active_scaffold_duplicate gem, it adds :duplicate 
> action, 
> which can be setup to create new record on click, or open a form prefilled 
> with 
> cloned record. If you have uniqueness validation, you need to generate new 
> unique value for column or open form instead of duplicating on click. 
>
> > 
> > On Saturday, 11 March 2017 11:24:45 UTC+8, Chee Chong Hwa wrote: 
> > > Hi Segio 
> > > 
> > > Tasks Controller 
> > > 
> > >  conf.action_links.add 'clone', :label => 'Clone', :page => false, 
> :type 
> > > 
> > > => :member 
> > > Nb. This displays corretly on per record basis 
> > > 
> > > def clone 
> > > 
> > >  old_task = Task.find(params[:id]) 
> > >  new_task = old_task.dup 
> > >  new_task.save 
> > > 
> > > end 
> > > 
> > > Routes.rb 
> > > 
> > >   resources :tasks, concerns: :active_scaffold 
> > > 
> > > resources :tasks do 
> > > 
> > >     member do 
> > >     
> > >      get 'clone' =>"tasks#clone" 
> > >     
> > >     end 
> > >     as_routes 
> > >   
> > >   end 
> > > 
> > > Issue: When I click clone... something is happening but the duplicate 
> > > record is not being save or perhaps not duplicated at all 
> > > 
> > > BTW, I got the idea from 
> > > 
> http://stackoverflow.com/questions/60033/what-is-the-easiest-way-to-duplic 
> > > ate-an-activerecord-record 
> > > 
> > > Q. What have I done wrong ? 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails Gem" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/activescaffold.
For more options, visit https://groups.google.com/d/optout.

Reply via email to