我有三个模型(管道,阶段,交易),具有以下关系:
首先我必须创建一个新的管道(这没问题),当我打开管道时我必须做四件事(在管道show.html.erb中)
所以我在几天内如何应对这种情况。向管道添加新阶段没有问题,但我不知道如何为阶段创建新的交易。我希望你理解有人可以给我一个提示如何添加我的交易的问题。
答案 0 :(得分:0)
你应该看看nested_attributes
。关于此,我们有一个很好的railscast。
nested_attributes
背后的基本思想是在模型中执行以下操作:
class Pipeline
has_many :stages
accepts_nested_attributes_for :stages
end
class Stage
belongs_to :pipeline
has_many :deals
accepts_nested_attributes_for :deals
end
class Deal
belongs_to :stage
end
然后以你的形式:
<%= f.fields_for :stages do |b| %>
<%= b.text_field ... %>
<%= b.fields_for :deals do |c| %>
<%= c.text_field ... %>
<% end %>
<% end %>
不要忘记在控制器中实例化你的类:
class PipelinesController
def new
@pipeline = Pipeline.new
@stage = @pipeline.stages.build
@deal = @stage.deals.build
end
end
答案 1 :(得分:0)
我建议使用表单对象。检查标题为“提取表单对象”的部分以获得想法:http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
如果您有权访问,您也可以查看此相关的railscast:http://railscasts.com/episodes/416-form-objects