Rails 4 nested_attributes遍历

时间:2014-10-16 21:06:16

标签: ruby-on-rails ruby activerecord ruby-on-rails-4

我按照说明理解他们。我觉得我做的一切都是正确的,但事情并非如此,因为它不起作用。如果有人可以请一分钟向我解释一下。

我有一个Blog#模型和一个像这样的Post#模型:

class Post < ActiveRecord::Base
  belongs_to :blog
end
class Blog < ActiveRecord::Base
  has_one :post, dependent: :destroy
  accepts_nested_attributes_for :post
end

在我的博客#controller

  def new
    @blog = Blog.new
    @blog.post.build
  end
...
def strong_params
  params.require(:blog).permit(:section, :category, :subcategory, :title, post_attributes: [:content])
end

以我的形式:

<%= form_for @blog, url: blog_create_path do |f| %>
   <%= f.select :section, BlogHelper.sections.unshift('') %>

  <%= f.fields_for :post do |post_fields| %>
    <%= post_fields.text_area :content, id: 'blog_content', oninput: "this.editor.update()" %>
  <% end %>

  <%= f.submit 'Publish', class: 'btn btn-sm btn-primary' %>
<% end %>

我得到的错误是:

undefined method `build' for nil:NilClass

我按照此处的说明进行操作:http://guides.rubyonrails.org/association_basics.html - 我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的行动应该是

def new
  @blog = Blog.new
  @blog.build_post
end

参见上述guide

中的“4.2 has_one Association Reference”一章