2016-03-22 11 views
0

以下のようないくつかのアクションを動的に作成したいと思います。 コレクションのアクションを作成する

しかし、コードなど

は、私は次のエラーを取得する方法ではありません:「未定義のローカル変数やメソッド」

が、これがすべてで可能であり、もしそうなら - どのように?

class Post < ActiveRecord::Base 
    CATEGORIES = [:music,:movies,:art,:jokes,:friends,:whatever].freeze 
end 

class PostsController < ApplicationController 
    Post::CATEGORIES.each do |category| 
    eval <<-INDEX_LIKE_ACTIONS 
     def #{category} 
     @posts = Post.where(category: '#{category}') 
     render :index 
     end 
    INDEX_LIKE_ACTIONS 
    end 
end 

resources :posts do 
    collection do 
    Post::CATEGORIES.each {|category| get category.to_s} 
    end 
end 
+1

を使用することができます。それがそれよりも複雑であれば、それが必要かもしれません。 – DickieBoy

答えて

2

あなたがやっているすべてのインデックスビューをレンダリングしている場合、私はカテゴリごとに別々の方法のためのあなたの必要性に疑問でしょうルビーのdefine_method

Post::CATEGORIES.each do |category| 
    define_method category do 
    @posts = Post.where(category: category.to_s) 
    render :index 
    end 
end 
関連する問題