Ruby on rails 生成SQL3数据库错误
我正在建立一个技能数据库,一开始我认为我需要一个标题参数,我将其作为必需参数添加。我想把标题参数全部去掉,这样我就可以创造新的技能和描述。现在有一个错误,因为它也在寻找:title。这是我的控制器:Ruby on rails 生成SQL3数据库错误,ruby-on-rails,database,sqlite,sqlite3-ruby,Ruby On Rails,Database,Sqlite,Sqlite3 Ruby,我正在建立一个技能数据库,一开始我认为我需要一个标题参数,我将其作为必需参数添加。我想把标题参数全部去掉,这样我就可以创造新的技能和描述。现在有一个错误,因为它也在寻找:title。这是我的控制器: class SkillsController < ApplicationController def index @skills = Skill.all end def show @skills = Skill.all end def ne
class SkillsController < ApplicationController
def index
@skills = Skill.all
end
def show
@skills = Skill.all
end
def new
@skills = Skill.all
end
def create
@skills = Skill.new(skill_params)
if @skills.save
redirect_to :action => 'index'
else
@skills = Skill.find(:all)
render :action => 'new'
end
end
def edit
@skills = Skill.find(params[:id])
@skills = Skill.find(:all)
end
def update
@skills = Skill.find(params[:id])
if @skills.update_attributes(params[:skill])
redirect_to :action => 'show', :id => @skills
else
@skills = Skill.find(:all)
render :action => 'edit'
end
end
def delete
Skill.find(params[:id]).destroy
redirect_to :action => 'index'
end
def show_skills
@skills = Skill.find(params[:id])
end
end
private
def skill_params
params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
end
我认为绕过这个问题的最简单方法是使skill.title不是必需的,但我不确定如何确切地修复它。如果有帮助,我还将发布我的/新表格:
<h1>Add new Skill</h1>
<%= form_tag ({action: "create"}) do %>
<p><label for="skill">Skill</label>:
<%= text_field 'skill', 'title' %></p>
<p><label for="skill_description">Description</label><br/>
<%= text_area 'skill', 'description' %></p>
<%= submit_tag "Create" %>
<% end %>
<%= link_to 'Back', {:action => 'index'} %>
添加新技能
技能:
说明
'索引'}%>
我试图摆脱“标题”这一行,但它带来了更多的问题。我会继续修改代码和研究,并感谢任何了解我的问题的人。干杯,再次感谢堆叠者 看起来您最初创建的
title
列带有NOT NULL
约束,因此数据库不允许在没有标题的情况下创建记录
如果您确实不需要它,那么应该从数据库中删除该列
创建迁移:
bundle exec rails generate migration remove_title_from_skills
bundle exec rake db:migrate
编辑创建的迁移文件并添加:
def change
remove_column :skills, :title
end
运行迁移:
bundle exec rails generate migration remove_title_from_skills
bundle exec rake db:migrate
删除应用程序中对
:title
的所有其他引用。那么,正如我所说,您的技能参数应该是这样的
def skill_params
params.require(:skill).permit(:title,:description)
end
您应该在允许的参数列表中允许您的属性
有关更多信息,您应该查看您的技能参数方法是一个示例,还是您真的有这样的方法?我有这样的方法,是不是很糟糕?您应该有属性名
。它应该是参数要求(:技能)。许可证(:标题,:描述)
这给了我一个新错误:ActiveRecord::SkillsController中的UnknownAttributeError#创建未知属性:description@skills=Skill.new(Skill_params)我会试试这个,让你知道它是如何工作的,非常感谢,我希望一切顺利=我得到的DAll是相同的错误:SkillsController中的NoMethodError#为“Dance”创建未定义的方法'each':String@skills=Skill.new(Skill_params)@ZachyBear您是否从表单中删除了
?第一篇文章中的代码仍然准确吗?