Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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_Nested Forms - Fatal编程技术网

Ruby on rails 嵌套表单不工作

Ruby on rails 嵌套表单不工作,ruby-on-rails,nested-forms,Ruby On Rails,Nested Forms,我有两个模型(Bcase和C_条目),我试图在每个Bcase创建表单上获得10个空白C_条目字段 我所做的是: 型号: bcase.rb class Bcase < ActiveRecord::Base has_many :c_entries, :dependent => :destroy accepts_nested_attributes_for :c_entries end class CEntry < ActiveRecord::

我有两个模型(Bcase和C_条目),我试图在每个Bcase创建表单上获得10个空白C_条目字段

我所做的是:

型号:

bcase.rb

class Bcase < ActiveRecord::Base
        has_many :c_entries, :dependent => :destroy
    accepts_nested_attributes_for :c_entries        
end
class CEntry < ActiveRecord::Base
    belongs_to :bcase
end
  def new
        @bcase = Bcase.new
        10.times {@bcase.c_entries.build}
  end

def bcase_params
    params.require(:bcase).permit(:pimp_id, :comment_text, :status, c_entries_attributes:[:id, :description, :bcase_id])
end
def setall
   @pimp = Pimp.find(params[:pimp_id])
   @bcase = @pimp.bcase
end
表单(在bcase->new.html.erb中呈现)

简单的表单

<%= simple_form_for bcase_path(@pimp) do |f| %>
  <%= f.error_notification %>

<%= simple_fields_for :c_entries do |ff| %>
<div class="form-actions">
<%= ff.input :description, label: false %>
<% end %>
</div>

<% end %>
NoMethodError in Bcases#new 
Showing c:/Users/Public/Documents/Sites/improvement/app/views/bcases/_form.html.erb where line #1 raised: 

undefined method `bcases_path' for #<#<Class:0x53efbc0>:0x4d195d0>
简单表单中@bcase的错误

<%= simple_form_for bcase_path(@pimp) do |f| %>
  <%= f.error_notification %>

<%= simple_fields_for :c_entries do |ff| %>
<div class="form-actions">
<%= ff.input :description, label: false %>
<% end %>
</div>

<% end %>
NoMethodError in Bcases#new 
Showing c:/Users/Public/Documents/Sites/improvement/app/views/bcases/_form.html.erb where line #1 raised: 

undefined method `bcases_path' for #<#<Class:0x53efbc0>:0x4d195d0>
这显示了10个空条目!所以他们就在那里,我就是看不见他们

[#<CEntry id: nil, bcase_id: nil, order_no: 1, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 2, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 3, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 4, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 5, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 6, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 7, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 8, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 9, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 10, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>] 

可能是因为指定了c_条目。但是这个解决方案看起来并不那么简单!是否可以在bcase控制器中以某种方式指定它?

啊,找到了!您忘记了
=
中的
,看起来不错。当然不是打字错误,你用a
b
写了
description
?哦,注意到了,先生。我最近把列名从description改为description,但忘了在表单和控制器中更改它!我现在改正了,但仍然不起作用。我无法解释自己遗漏了什么。看了各种各样的指南,代码都不多,所以出错的空间很小……哇,伙计,你真是天才:我欠你的!现在它工作得很好!好的,但现在我有一个问题,它只显示1个条目,而不是全部10个!在您的第一条评论中,您说它工作得很好,所以我想它不是:)您应该引用实例变量,而不是编写
:bcase
。所以我更新了我的答案。对于调试,您可以包含类似于

的内容。是的,很抱歉,我太累了,以至于看到了表单字段:D我完全忘了检查它是否适用于多个条目。而不是:(由于我的bcase模型嵌套在另一个模型中,我将
更改为
,但这没有改变任何内容。您提供的调试功能无法工作,因为c_条目未保存在该状态。有没有办法使未保存的条目计数?非常感谢!使用
大小
而不是计数。)(我把它们混在一起了)。如果你只写
@bcase
,它能工作吗?如果你需要嵌套路由,你应该为[@pimp,@bcase]
简单的表单(或者反过来写,不知道顺序)。我希望
@bcase(@pimp)
会抛出一个错误,这甚至不是ruby:)
<%= @bcase.c_entries.each do |entry| %>
<%= entry.description %>
<% end %>
[#<CEntry id: nil, bcase_id: nil, order_no: 1, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 2, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 3, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 4, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 5, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 6, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 7, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 8, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 9, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>, #<CEntry id: nil, bcase_id: nil, order_no: 10, description: nil, hours: nil, nrc: nil, created_at: nil, updated_at: nil>] 
<%= @bcase.c_entries.each do |hallo| %>
 <%= f.simple_fields_for :c_entries, hallo do |fff| %>
    <%= fff.input :description %>
 <% end %>
<% end %>
<%= simple_form_for @bcase do |f| %>
  <div class="form-inputs">
    <%= f.simple_fields_for :c_entries do |entry| %> 
      <%= entry.input :description %>
    <% end %>
  </div>