【发布时间】:2019-12-21 07:09:34
【问题描述】:
我正在构建一个项目管理应用程序。 我的系统就像项目-> 功能-> 任务。 一个项目有很多功能,一个功能有很多任务。
class Project < ApplicationRecord
belongs_to :user
has_many :features
validates :title, presence: true, length: { minimum: 4 }
accepts_nested_attributes_for :features
end
class Feature < ApplicationRecord
belongs_to :project
has_many :tasks
accepts_nested_attributes_for :tasks
end
class Task < ApplicationRecord
belongs_to :feature
end
我有显示操作指示的项目仪表板-
我有一个添加新功能的部分,还有一个功能下的新任务。
现在这是views/projects/show.html.erb的代码
<div class="col-md-3 colm" id="card2">
<div class="card">
<div class="card-body">
<a href="#card2" class="close" data-dismiss="alert" aria-label="close">×</a>
<h5 class="card-title">Backlog</h5>
<div class="card-text">
</div>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
+ Add Feature
</button>
<div class="collapse" id="collapseExample">
<%= render "feature" %>
</div>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseTask" aria-expanded="false" aria-controls="collapseTask">
+ Add Task
</button>
<div class="collapse" id="collapseTask">
<%= link_to "new task", new_project_feature_task_path(@project,1), id: "newlink", remote: true %>
</div>
</div>
</div>
</div>
_feature.html.erb 表单显示为
<%= form_for(@project, class: "form-group row") do |form| %>
<%= form.fields_for :features do |builder| %>
<%= builder.label :name %>
<%= builder.text_field :name, required: true %>
<%= builder.label :desc %>
<%= builder.text_field :desc %>
<%= builder.submit class: "btn btn-primary m-2" %>
<% end %>
<% end %>
但是当我检查数据库时,数据并没有插入features数据库中
作为参考,项目控制器类是 ->'
def show
@project = Project.find(params[:id])
@project.features.build
end
但问题是,每当我渲染 _feature.html.erb 时,它都会提供编辑功能表单而不是新功能表单,如何在项目显示页面内渲染新功能创建表单?
【问题讨论】:
标签: ruby-on-rails forms model-view-controller ruby-on-rails-5