5

私はレール初心者なので、以下はおそらく理解不足によるものですが、一日中見たり読んだりしていて、解決策が見つからないようです。

project と technology の 2 つのモデルがあります。

計画 :

class Project < ActiveRecord::Base

  attr_accessible description, :name

  has_and_belongs_to_many :technologies, :join_table => :projects_technologies

end

テクノロジー :

class Technology < ActiveRecord::Base

  attr_accessible :abbr, :description, :name

  has_and_belongs_to_many :projects, :join_table => :projects_technologies

end

私の Create_Projects_Technologies の移行は次のとおりです。

class CreateProjectsTechnologies < ActiveRecord::Migration
  def self.up

    create_table :projects_technologies, :id => false do |t|
        t.references :project
        t.references :technology
    end
    add_index :projects_technologies, [:project_id, :technology_id]
    add_index :projects_technologies, [:technology_id, :project_id]
  end

  def self.down
    drop_table :projects_technologies
  end
end

次に、Active Admin を使用して、次のフォームを使用してプロジェクト モデルを作成および編集しています。

ActiveAdmin.register Project do

  form do |f|
    f.inputs "Project attributes" do
      f.input :name
      f.input :description
      f.input :technologies, as: :check_boxes
    end
    f.buttons
  end

end

これにより、すべてのテクノロジーがチェックボックスとして正しく表示されますが、フォームを送信するとすぐに次のエラーが発生し、克服できませんでした:

ActiveModel::MassAssignmentSecurity::管理者のエラー::ProjectsController#update

Can't mass-assign protected attributes: technology_ids

すべてのヘルプは非常に感謝しています:D

4

1 に答える 1

7

technology_ids をプロジェクト attr_accessible に簡単に追加

attr_accessible :client, :description, :name, :technology_ids
于 2012-08-12T19:37:12.737 に答える