Ruby on rails 保存到数据库问题

Ruby on rails 保存到数据库问题,ruby-on-rails,database,crud,Ruby On Rails,Database,Crud,我正在建立一个数据库,我的创建操作遇到了一个问题。创建操作的代码是: def create @skills = Skill.new(params[:skill]) if @skills.save redirect_to :action => 'index' else @skills = Skill.find(:all) render :action => 'new'

我正在建立一个数据库,我的创建操作遇到了一个问题。创建操作的代码是:

 def create
        @skills = Skill.new(params[:skill])
      if @skills.save
            redirect_to :action => 'index'
      else
            @skills = Skill.find(:all)
            render :action => 'new'
      end
   end
我的错误信息是:

ActiveModel::ForbiddenAttributesError in SkillsController#create
ActiveModel::ForbiddenAttributesError

我假设有问题,我没有保存所有需要的参数,但我不确定。谢谢所有知道可能出了什么问题的人,我会自己继续胡闹。再次感谢。

在控制器中添加如下内容:

private

  def skill_params
    params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
  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
这是Rails4特有的:这个版本的RubyonRails fordids直接使用参数来实例化一个新的模型对象


它通过保护应用程序不受某些漏洞的影响而使其更加安全:例如,假设有人请求您的应用程序创建新用户并将
admin:true
作为参数传递。旧方法可能会创建一个管理员用户。相反,Rails 4路强制您过滤参数。

在控制器中添加如下内容:

private

  def skill_params
    params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
  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
这是Rails4特有的:这个版本的RubyonRails fordids直接使用参数来实例化一个新的模型对象


它通过保护应用程序不受某些漏洞的影响而使其更加安全:例如,假设有人请求您的应用程序创建新用户并将
admin:true
作为参数传递。旧方法可能会创建一个管理员用户。相反,Rails 4路强制您过滤参数。

在控制器中添加如下内容:

private

  def skill_params
    params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
  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
这是Rails4特有的:这个版本的RubyonRails fordids直接使用参数来实例化一个新的模型对象


它通过保护应用程序不受某些漏洞的影响而使其更加安全:例如,假设有人请求您的应用程序创建新用户并将
admin:true
作为参数传递。旧方法可能会创建一个管理员用户。相反,Rails 4路强制您过滤参数。

在控制器中添加如下内容:

private

  def skill_params
    params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
  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
这是Rails4特有的:这个版本的RubyonRails fordids直接使用参数来实例化一个新的模型对象



它通过保护应用程序不受某些漏洞的影响而使其更加安全:例如,假设有人请求您的应用程序创建新用户并将
admin:true
作为参数传递。旧方法可能会创建一个管理员用户。相反,Rails 4路强制您过滤参数。

建议阅读:。一般来说,您可能需要查看。建议阅读:。一般来说,您可能需要查看。建议阅读:。一般来说,您可能需要查看。建议阅读:。通常,您可能希望查看。这样做会给我一个奇怪的错误:未知操作找不到“create”操作SkillsController@ZachyBear确保create不在private下。它必须高于private,并且skills_params的定义应该位于skills控件的底部。谢谢,它位于顶部,可能就是问题所在!这清除了一个bug,并给出了另一个bug,该bug在SkillsController中无效#create SQLite3::ConstraintException:skills.title不能为NULL:插入到“skills”(“created_at”)值(?)@ZachyBear中,看起来title是必需的,但没有添加到表单中。检查一下。确保它也是允许的,并且skill+paramsdoing的定义给了我一个奇怪的错误:未知操作无法找到操作“create”SkillsController@ZachyBear确保create不在private下。它必须高于private,并且skills_params的定义应该位于skills控件的底部。谢谢,它位于顶部,可能就是问题所在!这清除了一个bug,并给出了另一个bug,该bug在SkillsController中无效#create SQLite3::ConstraintException:skills.title不能为NULL:插入到“skills”(“created_at”)值(?)@ZachyBear中,看起来title是必需的,但没有添加到表单中。检查一下。确保它也是允许的,并且skill+paramsdoing的定义给了我一个奇怪的错误:未知操作无法找到操作“create”SkillsController@ZachyBear确保create不在private下。它必须高于private,并且skills_params的定义应该位于skills控件的底部。谢谢,它位于顶部,可能就是问题所在!这清除了一个bug,并给出了另一个bug,该bug在SkillsController中无效#create SQLite3::ConstraintException:skills.title不能为NULL:插入到“skills”(“created_at”)值(?)@ZachyBear中,看起来title是必需的,但没有添加到表单中。检查一下。确保它也是允许的,并且skill+paramsdoing的定义给了我一个奇怪的错误:未知操作无法找到操作“create”SkillsController@ZachyBear确保create不在private下。它必须高于private,并且skills_params的定义应该位于skills控件的底部。谢谢,它位于顶部,可能就是问题所在!这清除了一个bug,并给出了另一个bug,该bug在SkillsController中无效#create SQLite3::ConstraintException:skills.title不能为NULL:插入到“skills”(“created_at”)值(?)@ZachyBear中,看起来title是必需的,但没有添加到表单中。检查一下。确保它也是允许的,并且定义了skill+params