将现有记录详细信息发送到新记录以节省时间 – “我也做了这个锻炼”

我已经创建了一个Ruby on Rails应用程序,用户可以在其中记录和分享他们的锻炼。 我想知道如何允许用户“克隆”锻炼,这样可以节省复制和粘贴所需的时间,或者自己进入锻炼。

我的想法是,当current_user看到他们也做过的锻炼时(即100次俯卧撑,100次仰卧起坐……等等),他们可以点击一条链接,说明I did this workout too 。 该链接会将它们带到/ views / workoutout / new,但随身携带从单击链接的位置的锻炼标题和描述,预先填充接收字段。

锻炼表有:标题和:描述。 关于如何做到这一点的想法?

更新:

在这里添加更多细节。 因此,如果我正在显示workout A ,其标题为Workout A title并且描述this is a great workout 。 我希望用户单击发送到new_workout_path的链接,并new_workout_path发送标题和说明以预填充f.textfield :titlef.textarea :description 。 这样新的锻炼forms有Workout A Titlethis is a great workout描述textarea的this is a great workout

使用ActiveRecord对象的clone方法有一种很好的方法。

你的控制器里有这样的东西:

 def new if params[:cloned_workout] workout_to_clone = Workout.find params[:cloned_workout] @workout = workout_to_clone.clone else @workout = Workout.new end # Any other new related setup can be put here end 

现在,您可以在视图中看到如下链接:

 <%= link_to "I did this too", new_workout_url + "?cloned_workout=#{@workout.id}" %> 

(注意:link_to行可以写得更好)

您可以将ActiveRecord模型的所有属性从一个复制到另一个,如下所示:

 workout = Workout.find(params[:id]) new_workout = Workout.new workout.attributes 

在这个例子中,我们将现有的锻炼从数据库中拉出(使用params哈希就像控制器动作一样),然后使用其属性初始化新的锻炼。