Я буду работать через Rails Guides (http://guides.rubyonrails.org/getting_started.html),and я застрял в пункте 11 „Построение формы несколько Модели“Рубин на Руководстве Rails: неопределенный метод `fields_for» для ноля: NilClass
Эта часть физических упражнений объясняет. о включении полой формы для одной модели внутри формы другого ...
ошибки на Новом/Редактировать сообщение: неопределенного метода `fields_for» для ноля: NilClass
Extracted source (around line #2):
1: <% @post.tags.build %>
2: <%= form.fields_for :tags do | tag_form | %>
3: <div class="field">
4: <%= tag_form.label :name, 'Tag: ' %>
5: <%= tag_form.text_field :name %>
код точно так, как (я даже получил отчаяние и скопировал и вставил код прямо из образца)
Мой код опубликован ниже. Я потратил часы, сравнивая это с кодом в руководстве, и он точно такой же. Может ли кто-нибудь указать мне, что может быть неправильным?
Большое спасибо заранее.
Вот мой код, включая частичную
модели/post.rb:
class Post < ActiveRecord::Base
attr_accessible :content, :name, :title, :tags_attributes
validates :name, :presence =>true
validates :title, :presence =>true,
:length => { :minimum => 5 }
has_many :comments, :dependent => :destroy
has_many :tags
accepts_nested_attributes_for :tags, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
end
модели/tag.rb:
class Tag < ActiveRecord::Base
belongs_to :post
attr_accessible :name
end
сообщений/_form .html.erb:
<% @post.tags.build %>
<%= form_for(@post) do |post_form| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= post_form.label :name %><br />
<%= post_form.text_field :name %>
</div>
<div class="field">
<%= post_form.label :title %><br />
<%= post_form.text_field :title %>
</div>
<div class="field">
<%= post_form.label :content %><br />
<%= post_form.text_area :content %>
</div>
<h2>Tags</h2>
<%= render :partial => 'tags/form',
:locals => {:from => post_form} %>
<div class="actions">
<%= post_form.submit %>
</div>
<% end %>
теги/_form.html.erb:
<%= form.fields_for :tags do | tag_form | %>
<div class="field">
<%= tag_form.label :name, 'Tag: ' %>
<%= tag_form.text_field :name %>
</div>
<% unless tag_form.object.nil? || tag_form.object.new_record? %>
<div class="field">
<%= tag_form.label :_destroy, 'Remove: ' %>
<%= tag_form.check_box :_destroy %>
</div>
<% end %>
<% end %>
опечатка здесь? ': locals => {: from => post_form}' – mikej
при поиске в google, одно предложение использовать form_for вместо form.fields_for, но таким образом выполнялся рендеринг, но после него не было сообщений после создания или обновления – user2116155