无法在Rails中保存新记录

时间:2019-01-15 02:39:30

标签: ruby-on-rails forms model controller record

我创建了一个新模型“工具”,该模型将用于创建设备记录,该记录以后将附加到相关项目中。首先,我需要为每个工具创建一条记录。我已经创建了所有必要的页面,就像使用类似模型所做的一样,但是当我尝试保存记录时,我被重定向到我的“根”页面,这表明该记录未保存。因为我没有收到错误消息,所以我很难说出问题出在哪里。

新表格

<%= form_with model: @tool, local: true do |form| %>

  <p>
    <%= form.label :name, :class => "form-component-header" %><br>
    <%= form.text_field :name %>
  </p>

  <p>
    <%= form.submit :class => "form_button" %>
  </p>

  <% end %>

  <% Tool.find_each do |tool| %>
    <%= tool.name %>
    <%= link_to 'Delete Tag', tools_path(@tool),
              method: :destroy,
              data: { confirm: 'Are you sure?' } %>
  <% end %>

控制器

class ToolsController < ApplicationController
before_action :require_user, only: [:edit, :update, :destroy]
before_action :set_search

def new
    @tool = Tool.new
end

def create
    tool = Tool.create(tool_params)
    if tool.save
        redirect_to tools_path
    else
        redirect_to 'root'
    end
end

def destroy
    @tool = Tool.find(params[:id])
    @tool.destroy

    redirect_to tools_path
end

private
    def tool_params
        params.require(:tool).permit(:name)
    end
end

型号

class CreateTools < ActiveRecord::Migration[5.2]
  def change
    create_table :tools do |t|
      t.string :name

      t.timestamps
    end
  end
end

1 个答案:

答案 0 :(得分:1)

通过tool.save!我能够找到问题。因为我希望记录既属于用户又属于项目,所以我需要建立一个中介模型来处理这种关系。通过将此模型建立在以前的唯一一对多关系模型的基础上,我没有考虑到这种更为复杂的关系,这种关系不允许保存记录。