Ruby on rails 无法将简单表单元素字符串保存到DB(Rails、SqLite)

Ruby on rails 无法将简单表单元素字符串保存到DB(Rails、SqLite),ruby-on-rails,sqlite,Ruby On Rails,Sqlite,所以我有一个简单的流程,在这里我填写一个简单的表单,将一些基本信息保存到数据库中,然后想把这些信息放在一个页面上,特定于那个项目 一切都按预期进行表单提交,重定向到正确的页面/books/:id,但一旦我到达该页面,我就无法提取我保存的字符串,如果我使用select*from books查询数据库;我得到以下结果,显示记录已成功插入,但似乎没有名称字符串 4||2015-01-11 09:59:48.177701|2015-01-11 09:59:48.177701 如您所见,表单正在提交,

所以我有一个简单的流程,在这里我填写一个简单的表单,将一些基本信息保存到数据库中,然后想把这些信息放在一个页面上,特定于那个项目

一切都按预期进行表单提交,重定向到正确的页面/books/:id,但一旦我到达该页面,我就无法提取我保存的字符串,如果我使用select*from books查询数据库;我得到以下结果,显示记录已成功插入,但似乎没有名称字符串

4||2015-01-11 09:59:48.177701|2015-01-11 09:59:48.177701 
如您所见,表单正在提交,图书记录已成功创建,但名称字符串未插入

非常感谢你的帮助

我的新书表单/app/views/books/new.html

路线

Rails.application.routes.draw do
  get "log_in" => "sessions#new", :as => "log_in"
  get "log_out" => "sessions#destroy", :as => "log_out"
  get "sign_up" => "users#new", :as => "sign_up"
  get "dashboard" => "dashboard#dashboard", :as => "dashboard"
  get "books" => "books#books", :as => "books"
  get "newbook" => "books#new", :as => "newbook"

  root 'home#index'

  resources :users
  resources :sessions
  resources :books

end
尝试:

而不是

 @book = Book.new(book_params)

 @book.save

您的代码似乎还可以,所以要调试它,您可以执行以下操作

1打开rails控制台并尝试创建保存记录

书,创造!名称:'样本名称'

如果这是可行的,这意味着你的模型部分是可行的,所以这与控制器和参数有关。如果这不起作用,发布错误日志,因为它可能会提供一些线索

2运行rails服务器并尝试从页面保存记录。观察从网页传递到控制器的参数。您可以使用chrome开发工具-chrome或firebug-firefox来实现这一点。这样您就知道实际值是否传递给控制器

3在创建函数后,在控制器中使用某种调试工具,如和

def create
  binding.pry 
  ... code ..
end
试着检查你得到的参数


HTH

从gem文件中删除受保护的\u属性gem运行bundle命令重新启动服务器并尝试创建一本书。如果您想保留受保护的_属性gem,那么在您的创建操作中您可以这样做

@book = Book.new(params[:book])
然后在你的模型中,你做到了

attr_accessible :name

你可以发布你的/views/books/show.html.erb吗!我想我可能有点问题-我是否缺少模型中的验证器?i、 e validates:name,presence:true@optimuspette缺少状态验证器无法阻止在您的案例中保存字段。嗯,同样的问题,将空白记录插入数据库。如果我添加validates:name,presence:true validates:name,唯一性:true到我的模型,然后我得到一个模板错误no bookscreate-但这可能是正确的吗?@user2656127是您的字段:title还是:name?对不起,它是`:name,更新了我的上一条评论。这不是问题所在,只是一个复制粘贴错误。如果我只是按照您的建议使用@book=book.createbook_params',我会遇到以下错误:缺少模板books/create,application/create,带有{:locale=>[:en],:formats=>[:html],:variants=>[:handlers=>[:erb,:builder,:raw,:ruby,:coffee,:jbuilder]}。搜索:*/home/action/auth/app/views`-我需要为create创建一个新视图吗?感谢Booksbooks中的@optimuspette NoMethodError显示/home/action/auth/app/views/books/books.html.erb,其中第5行出现:nil的未定义方法“name”:nilclass您的BooksController中有books操作吗?没有。我的BooksController books_controller.rb在上面。books动作看起来怎么样?books.html.erb怎么样?在你看来?是的,它有以下代码书名:

Rails.application.routes.draw do
  get "log_in" => "sessions#new", :as => "log_in"
  get "log_out" => "sessions#destroy", :as => "log_out"
  get "sign_up" => "users#new", :as => "sign_up"
  get "dashboard" => "dashboard#dashboard", :as => "dashboard"
  get "books" => "books#books", :as => "books"
  get "newbook" => "books#new", :as => "newbook"

  root 'home#index'

  resources :users
  resources :sessions
  resources :books

end
 @book = Book.create(book_params)
 @book = Book.new(book_params)

 @book.save
def create
  binding.pry 
  ... code ..
end
@book = Book.new(params[:book])
attr_accessible :name