将现有记录详细信息发送到新记录以节省时间 – “我也做了这个锻炼”
我已经创建了一个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 :title
和f.textarea :description
。 这样新的锻炼forms有Workout A Title
, this 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哈希就像控制器动作一样),然后使用其属性初始化新的锻炼。