0

情况

我想使用表单创建新类别。

new.html.erb中一切都很好:

<%= form_for @cat do |f| %>
<%= f.label :description %>
<%= f.text_field :description %>
<br>
<%= f.label :position %>
<%= f.text_field :position %>
<%= f.submit %>
<% end %>

但是在“提交”被按下之后,CategoriesController#create 中的 ArgumentError 被引发(未知键:描述)。http://prntscr.com/1fijdk

类别控制器.rb

class CategoriesController < ApplicationController
  def index
    @categories = Category.all
  end

  def new
    @cat = Category.new
  end

  def create
    @category = Category.find(params[:category])
    redirect_to :categories
  end
end

类别.rb

class Category < ActiveRecord::Base
    has_many :items
end

架构.rb

ActiveRecord::Schema.define(version: 20130715035836) do

  create_table "categories", force: true do |t|
    t.string   "description"
    t.integer  "position"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "items", force: true do |t|
    t.string   "name"
    t.float    "price"
    t.text     "description"
    t.integer  "category_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

在 Rails 3 中一切都很好,但在 Rails 4 中 attr_accessible 没有生成,我有点困惑。哪里有问题?

4

1 回答 1

0

Rails 4 不使用 attr_accessible 而是使用 strong_parameters 来允许(或不允许)质量分配。现在这是由控制器而不是模型处理的,您必须在控制器中指定允许的属性......

请参阅: http: //guides.rubyonrails.org/action_controller_overview.html#strong-parameters以了解其工作原理以及https://github.com/rails/strong_parameters

干杯

于 2013-07-15T09:46:51.870 回答