无法创建色器件
使用设备的任务,不能创建任务 我的模型 用户无法创建色器件
class User < ApplicationRecord # Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :tasks
end
任务
class Task < ApplicationRecord belongs_to :user
end
任务控制器
def create @task = Task.new(task_params)
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
,并试图在创建任务有错误
1错误禁止被保存在这个任务:
User must exist
我的反应
开始POST “/任务” 为127.0.0.1,在2017年12月27日14时20分59秒0200 处理由TasksController#创建以HTML 参数:{ “UTF8”=> “✓”, “authenticity_token”=> “b7EkQsJygYBW1xLIm1uFD8jluXy2LYeoYjAOjKcwWOMHLwtalXmkTrNJu0yhexucwY94COegDcuVrOWLRkf8dg ==”, “任务”=> { “标题”=> “”,“描述“=>”“,”优先“=>”“,”due(1i)“=>”2017“,”due(2i)“=>”12“,”due(3i)“=>”27“ ,“完成”=>“0”},“提交”=>“创建任务”}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] (0.0ms) begin transaction
(0.1ms) rollback transaction
怎么了?
回答:
更改belongs_to :user
到belongs_to :user, optional: true
。 Rails 5引入了关联中的默认验证。请参阅this link更好地理解
回答:
的方法创建控制器需要添加@task.user_id = current_user.id
回答:
要知道,工作是不是按照https://reservedwords.herokuapp.com/words/task?q[word_or_notes_cont]=task
在Rails的模型好名字没有保留字完整列表因为语言和框架的性质。但是,当你使用冲突的关键字时,有时你会面对奇怪的行为。
回答:
你丢失了user_id
创建task
尝试以下
在你的代码
def create @task = Task.new(task_params)
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
从您的代码修改,您可以使用
def create @task = Task.new(task_params)
@task.user = current_user
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
希望帮助
以上是 无法创建色器件 的全部内容, 来源链接: utcz.com/qa/265051.html