Ruby on Rails – 数据未保存。 索引显示空白值

我正在创建一个Ruby on Rails应用程序,但遇到了数据库问题。 我有“新”操作的控制器操作和视图,但除非我使用Rails控制台,否则我的值永远不会保存到数据库中。 我的Rails版本是4.0.4。 这是我的GamesController

class GamesController  "Game was saved" else render 'new' end end def edit @game = Game.find(params[:id]) end def update @game = Game.find(params[:id]) if @game.save redirect_to @game else render 'edit' end end def destroy @game = Game.find(params[:id]) @game.destroy redirect_to :action => 'index' end def game_params #Probably should use something inlace of :tags params.require(:game).permit(:tags) end end 

这是我的“新”视图new.html.erb

 

Add a new game!





当我将值传递给新表单,然后单击提交(创建操作)时,我被重定向到索引页面。 不幸的是,我看到每个字段的空白值,这意味着数据实际上没有保存。

我尝试使用validation进行测试并仅validation标题,但由于未保存值,因此无效。 另一方面,当我运行rails console时,我可以创建游戏类的新实例,并将它们保存到数据库中。 所以我不知道为什么它不适用于表单。

我试过用params [:game]和强参数来调用create方法。 它永远不会工作,它只返回空白值

这是我的rake路线文件

 Games::Application.routes.draw do get "static_pages/about" get "static_pages/contact" get "static_pages/help" resources :games end 

根据要求,我将添加我的gemfile。

 gem 'rails', '4.0.4' gem 'sqlite3' gem 'sass-rails', '~> 4.0.2' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 1.2' group :doc do gem 'sdoc', require: false end 

我的问题是如何在提交表单数据时显示这些值? 这与我的路线有关吗? 我宣布资源游戏将7条RESTFUL路线连接在一条线上。

我知道POST请求用于create方法。 我觉得很困惑,它可以在rails控制台中运行,但不能在表单上运行。

我在StackOverflow上进行了大量搜索,找到了一个关于strong_params的答案。 不幸的是,我将其合并到我的控制器中,但它仍然无效。 我仍然认为我的问题在于我如何使用strong_params。

我基本上剪切并粘贴了该答案中的代码,因此在这种情况下它可能不起作用。 我也试过阅读文档,但我无法理解。

你应该把你的attributes放在permitted params你的game_params方法应该是这样的

 private def game_params params.require(:game).permit(:title,:console,:genre,:released_on) end 

将新表单上的所有属性添加到强参数中

 def game_params params.require(:game).permit(:title, :console, :released_on, :genre) end 

有关详细信息,请参阅指南: http : //guides.rubyonrails.org/action_controller_overview.html#strong-parameters