Ruby on rails 提交一个模型&x27;来自另一个模型的s形式';Rails应用程序中的s视图
我正在构建一个项目管理应用程序。 我的系统类似于项目->功能->任务。 一个项目有许多功能,一个功能有许多任务Ruby on rails 提交一个模型&x27;来自另一个模型的s形式';Rails应用程序中的s视图,ruby-on-rails,forms,model-view-controller,ruby-on-rails-5,Ruby On Rails,Forms,Model View Controller,Ruby On Rails 5,我正在构建一个项目管理应用程序。 我的系统类似于项目->功能->任务。 一个项目有许多功能,一个功能有许多任务 class Project < ApplicationRecord belongs_to :user has_many :features validates :title, presence: true, length: { minimum: 4 } accepts_nested_attributes_for :features end class Featu
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
而\u 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 %>
但问题是,每当我呈现_feature.html.erb时,它都会给出一个编辑特征表单而不是一个新的特征表单,如何在project show页面中呈现新的特征创建表单?您的代码似乎有很多潜在的错误。例如,这里:
def show
@project = Project.find(params[:id])
@project.features.build
end
…可能想变得更像:
def show
@project = Project.find(params[:id])
@feature = @project.features.build
end
<%= form_for [@project, @feature], class: "form-group row" do |form| %>
这是:
<%= form_for(@project, class: "form-group row") do |form| %>
您可能会得到一个编辑表单,因为您正在将一条现有记录传递到您的表单\u中,再次,这里:
<%= form_for(@project, class: "form-group row") do |form| %>
最后,您没有展示任何关于如何处理对新项目\功能\任务\路径的ajax调用的内容。大概,这会生成一个表单?您是否有js
来显示表单(某种ajax上的:success
或您有什么)?非常感谢您的详细分析,我无法要求更多..实际上(最后一行我忘了删除)我想呈现一个表单taskform,它将用于将任务添加到各个功能,显示为没有路由匹配{:action=>“index”,:controller=>“tasks”,:feature\u id=>nil},缺少必需的键:[:feature\u id]什么是“it”(当您说“its showing…”)。在什么情况下?抛出的错误在哪里?我按照您所说的方法使用此表单头->
实现feature下的任务,并呈现此表单,将错误显示为项目中的ActionController::UrlGenerationError#show
您是否试图在@project.features内执行此操作。每个循环?
<%= form_for [@project, @feature], class: "form-group row" do |form| %>
resources :projects do
resources :features, shallow: true do
resources :tasks, shallow: true
end
end
<%= form_for(@project, class: "form-group row") do |form| %>
<%= link_to "new task", new_project_feature_task_path(@project,1), id: "newlink", remote: true %>
<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>
<% @project.features.each do |feature| %>
# render your feature details here
<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, feature), id: "feature-#{feature.id}-new-task-link", remote: true %>
</div>
<% end %>
</div>
</div>
</div>