Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 生成SQL3数据库错误_Ruby On Rails_Database_Sqlite_Sqlite3 Ruby - Fatal编程技术网

Ruby on rails 生成SQL3数据库错误

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

我正在建立一个技能数据库,一开始我认为我需要一个标题参数,我将其作为必需参数添加。我想把标题参数全部去掉,这样我就可以创造新的技能和描述。现在有一个错误,因为它也在寻找:title。这是我的控制器:

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您是否从表单中删除了
?第一篇文章中的代码仍然准确吗?