【问题标题】:Passing information from an existing record, to a new record, of a different table将信息从现有记录传递到不同表的新记录
【发布时间】:2011-06-23 04:36:22
【问题描述】:

如果我有Table A 的列titledescription,并且我想在Table B 中创建一条记录,其中还有一个titledescription 列,有没有办法通过该信息到new_b_path 以便/views/b/_form.html.erb 填充来自A 记录的数据?

我正在使用下面的代码来cloneworkout,但这可以说是在Table A 内起作用。我想clone 跨表。有什么想法吗?

workouts_controller.rb

...
  def new
    @workout_count = Workout.count
    if params[:cloned_workout]
        workout_to_clone = Workout.find params[:cloned_workout]
        @workout = workout_to_clone.clone
      else
    @workout = current_user.workouts.new 
  end
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @workout }
    end
  end
...

/views/workouts/show.html.erb

<%= link_to "Clone Workout", new_workout_url + "?cloned_workout=#{@workout.id}", :class => "float-right" %>

【问题讨论】:

  • 您能解释一下为什么需要 2 张桌子吗?
  • 我有workouts(表A),然后我允许健身房发布recommended_workout(表B)。我希望健身房会员能够将recommended_workout 克隆到他们自己的锻炼日志中。有意义吗?

标签: ruby-on-rails ruby clone


【解决方案1】:

嗯。从您的解释来看,听起来更好的策略可能是简单地创建一个名为Recommended 的表,其中包含两个belongs_to 关系,其中只有一个workout_id 和user_id 列。然后,您可以将推荐与用户和锻炼相关联。您还可以为提出建议的健身房​​或培训师设置一个 gym_id 或 trainer_id 列。有意义吗?

【讨论】:

  • 也许recommended 不是最好的用语。也许posted 会更好。想象有一个/gyms/show.html.erb 页面,健身房所有者可以在该页面上发布锻炼。成员(用户)可以来到/gyms/1 并查看发布的锻炼,并将其克隆(将其带到workouts_new 操作。
  • 好的,我明白了,因此,如果发布的锻炼以某种方式被发起者删除,那么链接到可能是空灵的条目可能会导致问题。
  • 嗯。我想知道使用“克隆”是否对您的需求过于严格。也许尝试使用旧对象的属性创建新对象。 @workout = current_user.workouts.new(:description =&gt; workout_to_clone.description, :title =&gt; workout_to_clone.title)
猜你喜欢
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多