【发布时间】:2019-08-16 15:37:22
【问题描述】:
我正在实现三重嵌套表单,您可以在其中看到我还显示了三重嵌套任务模型的内容,并且还呈现了一个表单以添加新任务。 任务列表显示正确 - 这意味着 fet 具有有效的特征模型,但不知道为什么它在意外渲染新任务表单时失败! 它显示在哪里->
Projects#show 中的 ActionController::UrlGenerationError
No route matches {:action=>"index", :controller=>"tasks", :feature_id=>nil}, missing required keys: [:feature_id]
<% @project.features.each do |fet| %>
<div class="card p-2">
<%= "#{fet.name} #{fet.id}" %>
<!-- new Taskform loading is showing problem -->
<%= render :partial => "taskform", :locals => {:feature => fet} %>
<!-- this one is displaying task list properly -->
<div class="card-body">
Tasks:
<% fet.tasks.each do |t| %>
<%= "#{t.name}" %>
<%= "#{t.completed}" %>
<%= "#{t.user_id}" %>
<% end %>
</div>
</div>
<% end %>
我的_taskform.html.erb 标头看起来像->
<%= form_for [feature, feature.tasks.build], method: :post, class: "form-group row" do |builder| %>
(我猜其余部分无关紧要,所以我没有包括)
现在 routes.rb 是,
resources :projects do
resources :features, shallow: true do
resources :tasks
end
end
请帮助我找出在显示和创建新的时行为模棱两可的可能原因。
N.B:我刚刚注意到在错误消息中 - 它说 No route matches {:action=>"index", 这是出乎意料的,显然我试图引用新操作以在功能下创建新任务(form_for [feature, feature.tasks.build])
【问题讨论】:
标签: ruby-on-rails forms model ruby-on-rails-5 associations