Ruby on rails RoR标准MVC CRUD操作中未将表单字段保存到数据库
我使用的是Rails 4.1.0 我的看法是:Ruby on rails RoR标准MVC CRUD操作中未将表单字段保存到数据库,ruby-on-rails,Ruby On Rails,我使用的是Rails 4.1.0 我的看法是: <%= form_for @book do |f| %> <%= f.text_field :title %> <%= f.text_field :author %> <%= f.number_field :pages %> <%= f.text_field :description %> <%= f.submit "Add book" %&
<%= form_for @book do |f| %>
<%= f.text_field :title %>
<%= f.text_field :author %>
<%= f.number_field :pages %>
<%= f.text_field :description %>
<%= f.submit "Add book" %>
<% end %>
我错过了什么?提前谢谢 我认为您在这里混淆了两个重叠的概念: 只允许某些参数创建DB记录的旧(ish)方法是将它们列为白名单,我认为这是您使用
attr\u访问器
尝试的方法,但正确的方法是attr\u accessible
控制哪些参数可以创建DB记录的新方法是使用privatebook\u params
方法实现的模式。但是,如果您正在执行强参数位,则不需要执行白名单
因此,如果您只需将
attr\u访问器
位一起取出,就可以了。谢谢,这确实是个问题!
class BooksController < ApplicationController
def new
@book = Book.new
end
def create
@book = Book.new(book_params)
if @book.save
redirect_to '/', notice: "You have succesfully added a book"
else
flash.now[:error] = "Something went wrong"
render :new
end
end
private
def book_params
params.require(:book).permit(:title, :author, :pages, :description)
end
end
class Book < ActiveRecord::Base
validates :title, presence: true
validates :title, uniqueness: true
attr_accessor :title, :author, :pages, :description
end
Started POST "/books" for 10.0.2.2 at 2014-05-05 22:59:08 +0000
Processing by BooksController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"SDB/oB/CjZsBHmI0zLPmQnKpZSxO7piGnsLSzEy2hyA=", "book"=>{"title"=>"tittel", "author"=>"te", "pages"=>"", "description"=>""}, "commit"=>"Add book"}
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
[1m[35mBook Exists (3.9ms)[0m SELECT 1 AS one FROM "books" WHERE "books"."title" = 'tittel' LIMIT 1
[1m[36mSQL (5.0ms)[0m [1mINSERT INTO "books" ("created_at", "updated_at") VALUES (?, ?)[0m [["created_at", "2014-05-05 22:59:08.989197"], ["updated_at", "2014-05-05 22:59:08.989197"]]
[1m[35m (5.9ms)[0m commit transaction
Redirected to http://localhost:3003/
Completed 302 Found in 26ms (ActiveRecord: 15.0ms)