0

私はしばらくレールを使用してきましたが、3 レベルの深いネストされたリソースを使用するという問題をまだ克服していません。メモページにいるときに、コース名をクラスとコースにリンクしたいのですが、レールでエラーが発生し続けます。

クラス、コース、ノートの 3 つのモデルがあります。クラスには多くのコースがあり、コースはクラスに属します。コースには多くのメモがあり、メモはコースに属しています。以下に説明します。

class.rb

 has_many :courses

course.rb

belongs_to :class
has_many :schedules
has_many :notes, :through => :schedules

note.rb

has_many :schedules
has_many :courses, :through => :schedules

スケジュール.rb

belongs_to :course
belongs_to :note

ルート.rb

  resources :classes, :shallow => true do
    resources :courses do
      resources :notes
    end
  end

index.html.erb

<% @notes.each do |note| %>
  <% note.courses.each do |course| %>
    <%= note_class(course) %>
  <% end %>
<% end %>

notes_helper.rb

  def note_class(course)
      link_to course.course_name, class_course_path(class, course)
  end

浅いルートは、レールが「未定義のローカル変数またはメソッド「クラス」の」というエラーを表示する場合を除いて、うまく機能します。上記のコードは正しいと思いますが、なぜ正しく機能しないのかわかりません。コースを mysite.com/classes/1/course/3 のような URL にリンクする方法について何か提案はありますか?

4

1 に答える 1

0

この質問はしばらく前に出されたことに気づきましたが、「答えられていない」ので試してみます。

いくつかのこと。classまず、ヘルパー メソッド内で発生するエラーは、インスタンスへの参照がないことが原因です。courseオブジェクトをパラメーターとして渡すだけです。上記の関連付けがあれば、これは機能します

notes_helper.rb

def note_class(course)
  link_to course.course_name, class_course_path(course.class, course)
end

2 つ目は、コメントの 1 つに記載されているようにclass、Ruby では予約済みのキーワードであるため、モデルや関連付けに使用しないようにするのが最善の方法です。乾杯。

于 2012-08-28T22:43:18.673 に答える