1

STIの使用では、特定の:タイプのすべてのページを取得しようとしています。私はその下pages_controller.rbRails - メインクラス、サブクラス、サブクラスですべてのレコードを取得する方法

class PagesController < ApplicationController 

    def index 
    @pages = Page.all 
    end 

end 

でメインクラスを持っている

、私はpages_controller.rb

class Blog < Page 

    def index 
     @pages = Blog.all 
    end 

end 

で別のクラスを持っているブログのクラスが持つすべてのページを取得しないでください。 "ブログ"のタイプ?代わりに、タイプに関係なくすべてのページを取得しています。

# app/models/page.rb 
class Page < ActiveRecord::Base 
end 

# app/models/blog.rb 
class Blog < Page 
end 

あなたの場合:私はまた、私はここでhttp://localhost:3000/blog

あなたはapp/models、ディレクトリ内のすべてのタイプのクラスを定義する必要があり

resources :pages do 
     collection do 
      get :gallery 
      get :list 
     end  
    end 
    resources :blog, :controller => :pages 
+0

別のコントローラーを作成した方が、PagesController自体でクラスを作成するのではなく、もっと良いと思います。 – Rohit

+0

それが機能する唯一の方法ですか?私の恐れは、3つまたは4つのタイプがある場合、3つまたは4つのコントローラが必要です。各コントローラには同様のコードが含まれています(例: - すべてのページをタイプ別に取得)。 – jyoseph

答えて

1

私の経路であるURLにアクセスしてい@pages = Page.where(:type => "Blog")試してみました1つのコントローラで両方を取得したい場合:

if blog? # implement this method yourself 
    @blogs = Blog.all 
else 
    @pages = Page.all 
end 

本質的に、allメソッドは、それを呼び出したクラスのインスタンスを返します。

ただし、タイプごとに別々のコントローラを使用することをお勧めします。それらは異なるリソースであり、そのように踏み込まなければならない。コントローラーを乾かすにはInheritedResourcesのようなツールを使用してください。

+0

+1頭の中にありがとうございます。すべてのページタイプにモデルを定義して空白にしなければならないのは私にとっては奇妙に思えました。それがうまくいけば、それが唯一の方法です、私はそれでダウンしています。 - 各ページタイプごとに別々のコントローラとモデルが用意されました。私はそれぞれのタイプ(ugh)のために新しい意見を求めているので、今はエラーが出ていると思う。これはInheritedResourcesが動作する場所ですか? – jyoseph

+0

もう一つの簡単な質問。各コントローラ(ブログ、写真)で、新規作成、作成、編集などのアクションを作成する必要がありますか?私はゆっくりだが確かにたくさんのコードを複製しているようだ(コントローラー間の違いはPage.newで、ブログコントローラーにはBlog.newがあるということだ)、そうだよね? – jyoseph

+0

そのため、私はInheritedResourcesを推奨しています。しかし、1つのコントローラも使用できます。空のクラスは問題ありません。それらはActiveRecordなので、まったく空ではありません。 – iain

関連する問題