У меня проблема с созданием вложенной формы.
Одна проблема заключается в том, что поле ввода текста для дочернего элемента (описание проекта) не отображает .
Вторая проблема заключается в том, что после создания нового проекта действие index возвращает «неопределенный метод для nil-объекта» . Я думаю, что это из-за полного отсутствия ProjectDecription (он не может вернуть project.project_description.description, если project_description не существует).
Кроме того, ProjectDescription успешно сохраняется в базе данных (без описания проекта). Пожалуйста, помогите.
Это мои модели в вопросе:
а) Модель проекта
1 class Project < ActiveRecord::Base
2 has_one :project_description
3 accepts_nested_attributes_for :project_description
4 end
б) Модель ProjectDescription
1 class ProjectDescription < ActiveRecord::Base
2 belongs_to :project
3 end
Это мой проект_контроллер.rb
1 class ProjectsController < ApplicationController
2
3 def index
4 @projects = Project.all
5 end
6
7 def new
8 @project = Project.new
9 @project.project_description = ProjectDescription.new
10 end
11
12 def create
13 @project = Project.new(params[:project])
14
15 if @project.save
16 redirect_to (projects_path)
17 else
18 new_project_path
19 end
20 end
21
22 def show
23 @project = Project.find(params[:id])
24 end
25
26 end
Это мое представление projects / index.html.erb (я думаю, что строка 5 вызывает неопределенную ошибку метода)
1 <%= link_to 'Create new project', new_project_path %>
2 <h1>Projects</h1>
3 <% @projects.each do |p| %>
4 <h2><%= link_to p.project_name, project_path(p) %></h2>
5 <%= p.project_description.description %>
6 <br/>
7 <% p.users.each do |u| %>
8 <%= u.user_name %>
9 <br/>
10 <% end %>
11 <br/>
12 <% end %>
Это мой просмотр projects / new.html.erb (текстовое поле, указанное в строке 9, не отображается)
1 <h2>Create new Project</h2>
2 <%= form_for @project do |f| %>
3 Project name:
4 <%= f.text_field :project_name %><br/>
5
6 Project descripiton:
7 <% @project.build_project_description unless @project.project_description %>
8 <% f.fields_for :project_description do |builder| %>
9 <%= builder.text_field :description %>
10 <% end %>
11 <br/>
12 <%= submit_tag ("Create Project") %>
13 <% end %>