简单的CRUD不会创建Object

时间:2016-08-13 23:22:02

标签: 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"]["description"])
    #...
end

无论出于何种原因,它给我一个 ArgumentError“错误的参数数量(给定2,预期为0..1)”。所以我想我会自己创建它并使用save-Method将它保存到数据库中,但这也没有用:

@board = Board.new(params["board"]["title"], params["board"]["description"])
@board.save!

这给了我 NoMethodError“未定义的方法`reverse_merge!'为零:NilClass“

我现在尝试了大量的调试,但无法弄明白。不是,它不是零,即使它说它使用的是NilClass。

编辑:表格代码(查看)

<%= form_tag :action => 'create' do %>

<div class="fluid-container">
    <p><label for="board_title">Title</label></p>
    <%= text_field 'board', 'title' %>
</div>

<div class="fluid-container">
    <p><label for="board_description">Description</label></p>
    <%= text_area 'board', 'description' %>
</div>

<%= submit_tag %>
<% end %>

我真的不知道发生了什么,希望有人可以提供帮助。提前致谢 - PreFiX / Dominik

1 个答案:

答案 0 :(得分:0)

当你尝试创建一个新对象时,你应该传递一个哈希而不是像你那样传递字符串。

将控制器方法替换为

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