Ruby on rails RoR标准MVC CRUD操作中未将表单字段保存到数据库

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" %&

我使用的是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" %>
<% end %>

我错过了什么?提前谢谢

我认为您在这里混淆了两个重叠的概念:

只允许某些参数创建DB记录的旧(ish)方法是将它们列为白名单,我认为这是您使用
attr\u访问器
尝试的方法,但正确的方法是
attr\u accessible

控制哪些参数可以创建DB记录的新方法是使用private
book\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)