我已经创建了一个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 :titlef.textarea :description。这样新的训练表单在“说明”文本区域中有Workout A Titlethis 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}" %>

(注意:与行的链接可以写得更好)

09-07 23:41