Rails 3.1アプリケーションで単一のテーブル継承を使用するようにルーティングすることに少し問題があります。今私は、私が扱っている2つのモデル:レッスンとセグメントを持っています。私のアプリケーションは、複数の異なる種類のセグメントを持つレッスンで構成されています。これらのセグメントは、私が単一テーブルの継承を使用している理由の多くの異なるタイプのものです。私は継承がRails Consoleを介して動作していることを確認できましたが、別のページを表示しようとすると問題が発生します。これらのページの1つは、レッスン#表示ビューにあります。私はこのエラーを取得する:ここでRails 3.1を使用した単一テーブル継承ルーティング
NoMethodError in Lessons#show
Showing web/app/views/lessons/show.html.erb where line #21 raised:
undefined method `web_segment_path' for #<#<Class:0x007f8faf1366b8>:0x007f8faf118320>
は、私はこのエラーを取得するコードの塊です:
<% @segments.each do |segment| %>
<tr>
<td><%= segment.title %></td>
<td><%= segment.segmenttype %></td>
<td><%= segment.type %></td>
<td><%= segment.url %></td>
<td><%= segment.filepath %></td>
<td><%= link_to 'Show', @segment %></td> <!-- This is the line with the error, if I remove this and the following two than everything is displayed properly -->
<td><%= link_to 'Edit', edit_segment_path(segment) %></td>
<td><%= link_to 'Destroy', segment, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
私はweb_segment_pathのためのルートを定義したことがない、と私はへのルートにそれをしたいので、私は混乱しています以前のようにセグメント化し、タイプに関係なく利用可能なすべてのセグメントを表示するだけです。私は、次のモデルを設定している:
class Lesson < ActiveRecord::Base
belongs_to :course
has_many :segments
end
segment.rb
class Segment < ActiveRecord::Base
TYPE = ['FileSegment','WebSegment','MediaSegment','QuizSegment']
belongs_to :lesson
end
web_segment.rb
class WebSegment < Segment
end
lesson.rb
私はのための相続をしないのですことを知っていますその他のタイプですが、今はWebSegmentタイプの作業に専念しています。 Railsが@segmentを参照する際に 'web_segment_path'というメソッドを見つけようとする理由を知っていますか?私が言ったように、「表示」、「編集」、および「削除」へのリンクを削除すると、ページが表示されます。これはなぜでしょうか?
ありがとうございました!
ここでは、どのような経路が定義されているかを見るために、「レーキ経路」の出力をここに投稿できますか? – Hck
rakeルートを呼び出すとき、私はweb_segment_pathに何も言及していません。あなたはまだ完全な出力を見たいですか? – Rhawb