2012-02-24 10 views
1

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'というメソッドを見つけようとする理由を知っていますか?私が言ったように、「表示」、「編集」、および「削除」へのリンクを削除すると、ページが表示されます。これはなぜでしょうか?

ありがとうございました!

+0

ここでは、どのような経路が定義されているかを見るために、「レーキ経路」の出力をここに投稿できますか? – Hck

+0

rakeルートを呼び出すとき、私はweb_segment_pathに何も言及していません。あなたはまだ完全な出力を見たいですか? – Rhawb

答えて

1

私はこれを自分で考え出しました。それはかなり明白でした。私はroutes.rbファイルで簡単なルーティングをするのを忘れていました。私の場合、追加する必要があったのは1行でした。

resources :web_segment, :controller => 'segments' 
関連する問題