Создать действие не работает (для модели с множеством) - PullRequest
0 голосов
/ 02 февраля 2019

Я создаю приложение Rails, которое выполняет следующее: пользователь может создавать новый проект, и внутри каждого проекта он может создавать разные документы.

Я начинаю строить его из внешнего слоя (т.е.Я сначала хочу иметь возможность создавать, обновлять, удалять проект, прежде чем начинать кодировать часть документов).

У меня есть следующая проблема: я закодировал действие new и create для project_controllers, ноновый объект не сохраняется.(Он не отображается в index.html.erb, а _form.html.erb продолжает рендеринг, что означает, что он не сохраняется)

Я думаю, что проблема в том, что проект has_many Papers, и, поскольку я еще не закодировалБумажная часть, это создает проблемы.НО я не уверен, что это правильный ответ.

project.rb

class Project < ApplicationRecord
    has_many :papers, dependent: :destroy
    belongs_to :user
end

project_controller.rb

class ProjectsController < ApplicationController
  before_action :set_project, only: [:show, :edit, :update, :destroy]

  def index
    @projects = Project.all
  end

  def show
  end

  def new
    @project = Project.new
  end

  def create
    @project = Project.new(project_params)
    @project.save
    if @project.save
      redirect_to projects_path()
    else
      render :new
    end
  end

  def edit
  end

  def update
    @project.update(project_params)
    redirect_to project_path(@project)
  end

  def destroy
    @project.destroy
    redirect_to projects_path
  end

  private

  def project_params
    params.require(:project).permit(:title, :body)
  end

  def set_project
    @project = Project.find(params[:id])
  end
end

new.html.erb

<%= render 'form', project: @project %>

_form.html.erb

<div class="container">
  <div class="row ">
    <div class="col-sm-4 col-sm-offset-4">
      <%= form_for(@project) do |f| %>
      <div class="form-group">
        <%= f.label :title, "Title of the Project"%>
        <%= f.text_field :title, as: :string, class: 'form-control'%>
      </div>

      <div class="form-group">
        <%= f.label :body, "Description of the Project"%>
        <%= f.text_area :body, rows: 20, class: 'form-control' %>
      </div>


      <%= f.submit "Confirm",  class:"btn btn-secondary btn-lg" %>
      <% end %>
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...