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 为rails中的嵌套属性添加空记录_Ruby On Rails_Nested Attributes_Has Many - Fatal编程技术网

Ruby on rails 为rails中的嵌套属性添加空记录

Ruby on rails 为rails中的嵌套属性添加空记录,ruby-on-rails,nested-attributes,has-many,Ruby On Rails,Nested Attributes,Has Many,我在Rails 4/Ruby 2.0.0中工作。我有两个模型-文章和图形文章有许多图形。因此,在我的代码中,我试图将一个空记录添加到文章的图形集合中,以便在表单中,有一组空字段可以添加新记录。我不明白为什么这些字段没有显示在表单上 我尝试了多种方法来构建图形集合,但似乎没有一种方法能够做到这一点。我肯定错过了一些非常小的东西 第1.rb条 使用ActiveRecord回调 第1.rb条 在控制器中构建它 ArticleController.rb 问题在于,对于表单_for和字段_for,您需要使

我在Rails 4/Ruby 2.0.0中工作。我有两个模型-
文章
图形
<代码>文章
有许多
图形
。因此,在我的代码中,我试图将一个空记录添加到文章的图形集合中,以便在表单中,有一组空字段可以添加新记录。我不明白为什么这些字段没有显示在表单上

我尝试了多种方法来构建图形集合,但似乎没有一种方法能够做到这一点。我肯定错过了一些非常小的东西

第1.rb条 使用ActiveRecord回调 第1.rb条 在控制器中构建它 ArticleController.rb
问题在于,对于<代码>表单_for和<代码>字段_for,您需要使用
在控制器中执行此操作是默认的执行方式。其余的看起来不错。您是否使用强参数?我建议您阅读并观看这篇文章,感谢您提到了强大的参数,我确实忘记了将其添加到允许的列表中,因此我确信这会导致以后的问题。但不幸的是,这并没有解决问题。我现在会查看这些链接,看看是否有什么发现。我想你缺少了一个
=
符号:
@Alex,缺少的
=
正是问题所在。我讨厌这样的问题,我盯着它看了好几个小时。这没用,我从来都不清楚什么时候该用,什么时候不该用。既然我没有答案,那么发表评论解决我的问题的标准是什么?我将为此添加一个答案
class Article < ActiveRecord::Base
    has_many :graphics, :dependent => :destroy, :foreign_key => 'article_id' 

    accepts_nested_attributes_for :graphics,
      :allow_destroy => true,
      :reject_if     => :all_blank
end
class Graphic < ActiveRecord::Base
    belongs_to :article
    validates_presence_of :path, :caption
end
...
<% f.fields_for :graphics do |g| %>
    <div class="clear clearfix pad-b-20">
        <div class="w-1-2 left f-left">
          <div class="field">
            <%= g.label :path %><br>
            <%= g.text_field :path %>
          </div>
        </div>
        <div class="w-1-2 left f-left">
          <div class="field">
            <%= g.label :caption %><br>
            <%= g.text_field :caption %>
          </div>
        </div>
    </div>
<% end %>
...
<%= form_for(setup_article(@article)) do |f| %>
module FormHelper
    def setup_article(article)
        article.graphics.build
        article
    end  
end
...
after_initialize :build_graphics

private

def build_graphics
    self.graphics.build
end
...
def new
    @article = Article.new
    @article.graphics.build
end
...
...
<%= f.fields_for :graphics do |g| %>
   Your content
<% end %>
...