我已经尝试通过开始处理一个小项目并遇到一个我无法解决的问题进入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
答案 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