我已经创建了一个ruby on rails应用程序,用户可以在其中记录和分享他们的训练。我想知道如何允许用户“克隆”一个训练,可以这么说,节省复制和粘贴所需的时间,或者自己输入训练。
我的想法是,当当前用户看到他们也做过的训练(即100个俯卧撑、100个仰卧起坐……等等)时,他们可以单击一个链接,上面写着I did this workout too
。该链接会将他们带到/views/workouts/new,但会附带单击链接处的训练标题和说明,预先填充接收字段。
训练表有:title和:description。关于怎么做的想法?
更新:
在这里再加一点细节。所以如果我显示的是workout A
,它的标题是Workout A title
,描述是this is a great workout
。我希望用户单击发送到new_workout_path
的链接,并将标题和说明与之一起发送,以预先填充f.textfield :title
和f.textarea :description
。这样新的训练表单在“说明”文本区域中有Workout A Title
和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}" %>
(注意:与行的链接可以写得更好)