簡體   English   中英

在Rails中為嵌套屬性添加空記錄

[英]Adding empty record for nested attribute in rails

我正在使用Rails 4 / Ruby 2.0.0。 我有兩個模型- ArticlesGraphics Articles has_many Graphics 因此,在我的代碼中,我試圖將一個空記錄添加到文章上的圖形集合中,以便在表單中,將有一個空字段集來添加新記錄。 我無法弄清楚為什么字段沒有顯示在表單上。

我嘗試了多種構建圖形集合的方法,但似乎沒有一個可行的方法。 當然,我一定會缺少一些瘋狂的小東西。

Article.rb

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

Graphic.rb

class Graphic < ActiveRecord::Base
    belongs_to :article
    validates_presence_of :path, :caption
end

_form.html.erb

...
<% 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.html.erb

<%= form_for(setup_article(@article)) do |f| %>

form_helper.rb

module FormHelper
    def setup_article(article)
        article.graphics.build
        article
    end  
end

使用ActiveRecord回調

Article.rb

...
after_initialize :build_graphics

private

def build_graphics
    self.graphics.build
end

在控制器中構建

ArticleController.rb

...
def new
    @article = Article.new
    @article.graphics.build
end
...

問題在於,對於form_forfields_for都需要使用<%= ,因為它們會呈現表單的內容。

因此,要解決您的問題,您需要編寫

...
<%= f.fields_for :graphics do |g| %>
   Your content
<% end %>
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM