我对我的项目有疑问。我正在创建一个关于燃料价格的小项目,用户可以输入当前燃料的价格。要输入价格,请进入:petrol_station ->post_date→职位。在post中,有两个输入字段:diesel_price和pb_price。这是我在数据库的帖子。但是当我尝试添加price (post)时,我有这个错误。
我试过删除"NOT NULL"从db/模式。我也试着改变我的ERD模式,但我认为我已经得到了所有必须做的事情。
这是我的错误:
ActiveRecord::NotNullViolation in PostsController#create
SQLite3::ConstraintException: NOT NULL constraint failed: posts.petrol_station_id
Extracted source (around line #32):
respond_to do |format|
if @post.save
format.html { redirect_to [@petrol_station, @post_date], notice: 'Post was successfully created.' }
format.json { render :show, status: :created, location: @post }
else
这是我的仓库:
https://github.com/FilipK00/p-aplikacje-mobilne下面是我的ERD模式:erd_schema
参数petrol_station_id
超出了post的哈希值参数:
Parameters: {"authenticity_token"=>"[FILTERED]", "post"=>{"pb_price"=>"1", "diesel_price"=>"1"}, "commit"=>"Create Post", "petrol_station_id"=>"1", "post_date_id"=>"1"}
这就是NOT NULL错误的原因,它试图在petrol_station_id
中为Post保存一个nil值。
由于您在创建操作的开头搜索PetrolStation
:
@petrol_station = PetrolStation.find(params[:petrol_station_id])
在@post = @post_date.posts.new(post_params)
下面添加代码应该可以完成工作:
@post.petrol_station_id = @petrol_station.id