0

ここで、よくわからない問題に直面しています。レール 3.1。

has_many リレーションシップ Books と Data にリンクされた 2 つのクラスがあります。

class Book < ActiveRecord::Base
has_many :data, :dependent => :destroy
end

class Datum < ActiveRecord::Base
belongs_to :books

def file_path
    u = @book.path + '/' + self[:name] + '.' + self[:format]
    return u
end
end

関係は正しく機能し、私の見解では、Datum クラスから属性を正しく抽出できます。ビューから:

<% book.data.each do |d| %><%= d.format %><% end %>

これは完全に機能します。しかし、パスを返すメソッドを参照しようとすると、未定義のメソッド エラーが発生します。

<% book.data.each do |d| %><%= d.file_path %><% end %>

ここで非常に基本的なものが明らかに欠けています...

4

2 に答える 2

0

これは機能しますか?

def file_path
    u = book.path + '/' + self[:name] + '.' + self[:format]
    return u
end

book代わりに使用していることに注意してください@book

于 2012-07-19T08:13:41.713 に答える
0

あなたのbelongs_to関係は正しくありません。@bookまた、モデルではアクセスできません。モデルDatumは次のようになります

class Datum < ActiveRecord::Base
  belongs_to :book

  def file_path
    return book.path + '/' + self[:name] + '.' + self[:format]
  end
end

Datumに属しているためbookbookinモデルはDatum、このデータムが属する特定の本を参照します。

于 2012-07-19T08:14:00.933 に答える