首页 > 解决方案 > 创建操作不起作用(对于有很多的模型)

问题描述

我正在构建一个 Rails 应用程序,它执行以下操作:用户可以创建一个新项目,并且在每个项目中,它可以创建不同的论文。

我从外层开始构建它(意思是,在开始编写论文部分之前,我首先希望能够创建、更新、删除一个项目)。

我有以下问题:我为新实体编写了代码并创建了操作,project_controllers但未保存新实体。(它不显示index.html.erb_form.html.erb保持渲染,这意味着它没有保存)

我认为问题在于项目has_many论文,并且由于我尚未对论文部分进行编码,因此会产生问题。但我不确定这是否是正确的答案。

项目.rb

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

项目控制器.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

新的.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>

标签: ruby-on-rails

解决方案


推荐阅读