Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 一页三款_Ruby On Rails - Fatal编程技术网

Ruby on rails 一页三款

Ruby on rails 一页三款,ruby-on-rails,Ruby On Rails,我有三个模型(管道、阶段、交易),它们之间有以下关系: 管道有多个阶段/a阶段属于一个管道 一个阶段有多个交易/一个交易属于一个阶段 首先,我必须创建一个新的管道(这没有问题),当我打开管道时,我必须做四件事(在pipelines show.html.erb中) 添加新阶段 添加新交易 编辑阶段 编辑交易 所以我在谷歌上搜索了几天如何处理这种情况。向管道中添加新的阶段是没有问题的,但我不知道如何在阶段中创建新的交易。我希望你能理解有人能给我一个如何添加我的交易的提示。你应该看看嵌套的属性

我有三个模型(管道、阶段、交易),它们之间有以下关系:

  • 管道有多个阶段/a阶段属于一个管道
  • 一个阶段有多个交易/一个交易属于一个阶段
首先,我必须创建一个新的管道(这没有问题),当我打开管道时,我必须做四件事(在pipelines show.html.erb中)

  • 添加新阶段
  • 添加新交易
  • 编辑阶段
  • 编辑交易

所以我在谷歌上搜索了几天如何处理这种情况。向管道中添加新的阶段是没有问题的,但我不知道如何在阶段中创建新的交易。我希望你能理解有人能给我一个如何添加我的交易的提示。

你应该看看
嵌套的属性。这有一个很好的解释

嵌套的_属性的基本思想是在模型中执行以下操作:

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 %>

我建议使用表单对象。查看标题为“提取表单对象”的部分,了解以下内容:


如果您有访问权限,您也可以查看此相关的railscast:

我想我是从您的帖子中了解到这一点的,但是您在这里只使用一个表单对吗?我想我需要两个表单(一个用于向管道中添加阶段(已经运行了)还有一个用于向其中一个阶段添加交易。因此,我不知道如何告诉交易控制器新创建的交易属于某个特定阶段。最后,我需要这样一个页面:Pipelinename,然后是所有阶段,在每个阶段下,我要添加/编辑/删除交易。在该页面下方,我要添加/编辑/删除阶段。
class PipelinesController 
  def new
    @pipeline = Pipeline.new
    @stage    = @pipeline.stages.build
    @deal     = @stage.deals.build
  end
end