Rails不在数据库中插入摘要

问题描述 投票:0回答:1

我是Rails的新手,使用我的Car模型将新记录插入数据库时​​遇到了麻烦。

应用程序如下:我已经构建了Rails官方网站中定义的文章基本教程应用程序,直到5.9

我使用devise添加了用户身份验证,我想添加一个与用户相关的模型-cars。用户has_many_cars,一辆车属于一个用户。这是user.rb模型文件:

class User < ApplicationRecord
 # Include default devise modules. Others available are:
 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
 devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :validatable
 has_many :cars
end

cars.rb文件是:

class Car < ApplicationRecord
belongs_to :user
end

汽车表的结构如下:

class CreateCars < ActiveRecord::Migration[6.0]
  def change
    create_table :cars do |t|
      t.string :title
      t.text :description
      t.string :img

      t.timestamps
    end
  end
end

我添加了用户关联:

class AddUserIdToCars < ActiveRecord::Migration[6.0]
  def change
    add_column :cars, :user_id, :integer
  end
end

现在,当我使用rails console时,我看到创建了cars表和user表,并且创建用户工作正常。

另外,当我尝试创建新车时,我被重定向回我的车列表,并且没有加载任何东西,当我检查控制台时,我看到cars表为空。

汽车管理员是:

class CarsController < ApplicationController
    def index
        @cars = Car.all
    end
    def new
    end
    def show
        @car = Car.find(params[:id])
    end
    def create
        # render plain: params[:car].inspect
        @car = Car.new(car_params)
        @car.save
        redirect_to @car
    end
    private
    def car_params
        params.require(:car).permit(:title, :description, :img)
    end
end

汽车/新视图是:

<h1>Add new car</h1>

<%= form_with scope: :car,
url: cars_path,
local: true do |form| %>
  <p>
    <%= form.label :title %><br>
    <%= form.text_field :title %>
  </p>

  <p>
    <%= form.label :description %><br>
    <%= form.text_area :description %>
  </p>

    <p>
    <%= form.label :img %><br>
    <%= form.text_area :img %>
  </p>

  <p>
    <%= form.submit %>
  </p>
<% end %>
<%= link_to 'Back', cars_path %>

汽车索引视图为:

<h1>Listing cars</h1>

<table>
  <tr>
    <th>Title</th>
    <th>description</th>
    <th>Img</th>
  </tr>

  <% @cars.each do |car| %>
    <tr>
      <td><%= car.title %></td>
      <td><%= car.description %></td>
      <td><%= car.img %></td>

      <td>
      <%= link_to 'Show', car_path(car) %>
      </td>
    </tr>
  <% end %>
</table>

<%= link_to 'New Car', new_car_path %>

[当我发布新车或进入索引页面时,没有错误,并且文章部分(我使用rails官方教程创建的)中的结构完全相同。

当我导航到道路/汽车或提交新车时,我会看到一个空表。当我尝试使用show时,通过导航到cars /:id,出现一个错误,即不存在具有该ID的汽车-另一个没有插入记录的证明。

我对Rails还是很陌生,所以如果没有足够的信息/我分享了很多信息,我们深感抱歉。如果需要更多信息,请告诉我。

我看过大多数与类似主题有关的问题,在那儿都没有找到任何相关的答案。我看到了这一点,等等:

Insert into Rails Database

Rails 4 not inserting values into database

Ruby on Rails not adding record to database

Rails 5: ActiveRecord not creating record

为什么在撰写文章时没有插入汽车,甚至功能和erb文件实际上都一样?

我是Rails的新手,使用我的Car模型将新记录插入数据库时​​遇到了麻烦。该应用程序如下:我已经将文章基本教程应用程序构建为...

ruby-on-rails ruby activemodel
1个回答
0
投票

[好像您在轨道6上。因此,默认情况下,当Car belongs_to :user时,则需要user_id上的@car。但是,在create操作中,您永远不会在user_id上设置@car,因此@car未保存。

© www.soinside.com 2019 - 2024. All rights reserved.