Ruby on rails 简单积垢赢得';不创建对象

Ruby on rails 简单积垢赢得';不创建对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我曾试图通过开始从事一个小项目而进入rails和ruby,但遇到了一个无法解决的问题 当我试图为一个对象创建一个简单的CRUD时,创建部分不再有意义 def create if (params.nil? || params[:board].nil?) return render status: 400 end @board = Board.create(params["board"]["title"], params["board"]["descripti

我曾试图通过开始从事一个小项目而进入rails和ruby,但遇到了一个无法解决的问题

当我试图为一个对象创建一个简单的CRUD时,创建部分不再有意义

def create
    if (params.nil? || params[:board].nil?)
        return render status: 400
    end
    @board = Board.create(params["board"]["title"], params["board"]["description"])
    #...
end
无论出于何种原因,它都会给我一个ArgumentError“参数数量错误(给定2,预期为0..1)”。所以我想我只需要自己创建它,然后使用save方法将它保存到数据库中,但这也没有成功:

@board = Board.new(params["board"]["title"], params["board"]["description"])
@board.save!
这给了我nil:NilClass的未定义方法`reverse\u merge!'

我现在试着调试一下,但还是搞不懂。而不是,它不是nil,即使它说它使用nil类

编辑:表单代码(视图)

“创建”do%>
头衔

描述

我真的不知道发生了什么,希望有人能帮忙。提前感谢-前缀/Dominik

而不是

@board = Board.create(params["board"]["title"], params["board"]["description"])
试一试

你也应该能做到这一点

@board = Board.create(params[:board])
但出于安全原因,这是行不通的

当您尝试创建一个新对象时,您应该传递一个散列,而不是像以前那样传递字符串

将控制器方法替换为

def create
  @board = Board.new(board_params)

  if @board.save
    redirect_to @board, notice: 'Board was successfully created.'
  else
    # render the new page
  end
end
并添加一个私有方法

private 

def board_params
  params.require(:board).permit(:title, :description)
end

已经试过了,给出了NoMethodError:“未定义的方法”`[]'for nil:NilClass”抱歉刚才正在编辑-你能试试Board.create(title:params[“Board”][“title”],description:params[“Board”][“description”]),然后阅读关于参数的说明。出于安全原因,您可以传入批量参数。是否执行此操作:Board.create(title:“title”,description:“the description”),请发布您的表单代码。遗憾的是,还返回到NoMethodError:“未定义的方法”[],用于nil:NilClass”@PreFiXAUT,但看起来params是nil。您能否将控制器方法的内容替换为
呈现文本:params[“board”]
,并告诉我当您单击
保存帖子时会显示什么?它只输出一个sinlge'#',仅此而已。奇怪的是,我直接渲染了这个节目,以查看是否确实有数据,并且确实有数据。我能够创建一个板,但没有保存它。很遗憾,@PreFiXAUT您的代码对我来说工作得很好。我不明白你的意思。如果您试图保存而不输入任何值,您应该会看到
{“title”=>,“description”=>“}
您看到了吗?将
create
操作中的所有内容替换为
render text:params[“board”]
。告诉我渲染的是什么。我知道,从各个方面来看,它毫无意义。我之前没有查看完整的源代码,注意到它在#
def create
  @board = Board.new(board_params)

  if @board.save
    redirect_to @board, notice: 'Board was successfully created.'
  else
    # render the new page
  end
end
private 

def board_params
  params.require(:board).permit(:title, :description)
end