2

私は少し Rails 初心者なので、これが私の側の明らかな間違いである場合は申し訳ありません。各画像インスタンスがカテゴリと「has_and_belongs_to_many」の関係を持ち、その逆の2つのモデル、画像とカテゴリの関連付けを作成しようとしています。各画像を複数のカテゴリに添付できるようにするチェック ボックスとして画像アップロード フォームに表示されるカテゴリを取得したいのですが、このエラーが発生し続けます。

undefined method `association' for #<ActionView::Helpers::FormBuilder:0x000001011cf370>

私は約2日間それに固執しており、同様の問題のように見える他のすべての投稿とグーグルをチェックし、さまざまなチュートリアルを試し、ゼロから数回始めました。これまでのところ何も機能しておらず、行き止まりに陥っています。これが私が現時点で持っているものです。カテゴリと画像のモデルはそれ自体で問題なく動作し、categories_images の移行も問題ないことがわかります。テーブルを確認したところ、コンソールと GUI から画像とカテゴリにデータを挿入できました。すべて正常に動作しますが、関連付けを試みたときにフォームがこのエラーをスローする理由がわかりません。これに関するヘルプは本当に感謝しています!

これが私が現時点で持っているものです。私は Rails 3.2.11 と Ruby 1.9.3 を使用しています。

Image.rb

class Image < ActiveRecord::Base
 attr_accessible :description, :name
 has_and_belongs_to_many :categories
 accepts_nested_attributes_for :categories

end

カテゴリー.rb

class Category < ActiveRecord::Base
  attr_accessible :name
  validates_presence_of :name
  has_and_belongs_to_many :images
end

カテゴリ_画像.rb

class CategoriesImages < ActiveRecord::Migration
  def change
  create_table :categories_images do |t|
   t.integer :category_id
   t.integer :image_id
  end
  add_index :categories_images, [:category_id,:image_id]
 end
end

create_images.rb

class CreateImages < ActiveRecord::Migration

  def change
    create_table :images do |t|
      t.string :name
      t.text :description

      t.timestamps
    end
   end
  end

create_categories.rb

class CreateCategories < ActiveRecord::Migration
  def change
    create_table :categories do |t|
      t.string :name

      t.timestamps
    end
  end
end

これは、問題と思われる「f.association」行が強調表示された画像アップロード フォーム (現時点でのファイル アップロード機能を除く) です。

<%= form_for(@image) do |f| %>
  <% if @image.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>

      <ul>
      <% @image.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_area :description %>
  </div>
**<%= f.association :categories, :as => :checkboxes %>**
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
4

1 に答える 1

1

エラーは、「関連付け」が使用可能な方法ではないことを示しています。simple_form のような宝石への依存関係はありますか? これを含めますか?

于 2013-11-02T17:33:18.427 に答える