为什么Rails无法向数据库添加新记录?

时间:2016-10-13 20:21:13

标签: ruby-on-rails ruby postgresql

我正在使用PostgreSQL。我在/main URL(localhost:3000 / main)上有下一个表单:

=form_for(@car) do |b|
    .col-xs-2= b.text_field(:type, class: "form-control", placeholder: "Type")
    = b.submit('Buy', class: "btn btn-default")

在我的控制器中:

def main
  @car = Car.new
end

def new
  @car = Car.new
end

def create
@car = Car.new(car_params)

respond_to do |format|
  if @car.save
    format.html { redirect_to @car, notice: 'Car was successfully ordered.' }
    format.json { render :show, status: :created, location: @car }
  else
    format.html { render :new }
    format.json { render json: @car, status: :unprocessable_entity }
  end
end

,其中

def car_params
  params.require(:car).permit(:type)
end

我检查了我的代码100次,似乎一切正常,但我无法在数据库表中添加新记录。任何人都可以帮助我为什么会这样?我的代码有什么问题?

4 个答案:

答案 0 :(得分:0)

你忘了救车了。虽然您声明并设置了对象,但您忘记将其保存在数据库中。

您应该通过添加以下行来执行此操作:

@car.save

在创建动作

答案 1 :(得分:0)

缺少create方法的一些东西。需要添加" .new"汽车变量的设定位置,然后也是" .save" if语句在哪里,我相信应该这样做。

创建方法应如下所示

def create
   @car = Car.new(car_params)

respond_to do |format|
  if @car.save
    format.html { redirect_to @car, notice: 'Car was successfully ordered.' }
    format.json { render :show, status: :created, location: @car }
else
    format.html { render :new }
    format.json { render json: @car, status: :unprocessable_entity }
  end
end

答案 2 :(得分:0)

CustomerNumber OrderMonth NumberOfMonths 123 Jul 2011 15 123 Jan 2013 18 123 Aug 2015 30 不正确。 您需要执行@car = Car(car_params)

答案 3 :(得分:0)

您需要做的第一件事就是在create方法中替换这一行。

@car = Car(car_params)

这一行

@car = Car.new(car_params)

因为我们需要用允许的参数来初始化汽车的记录。之后你必须调用@car.save,它将返回一个布尔值。

所以你可以在条件如

的情况下查看
if @car.save

希望这能解决你的问题。