2016-03-22 23 views
0

Bazı eylemleri dinamik olarak oluşturmak istiyorum, aşağıdakine benzer bir şey. Koleksiyondan eylemler oluşturma

Fakat kodu olarak

aşağıdaki hatayı alıyorum bir yöntem değil: "tanımsız yerel değişken veya yöntem"

bu hiç mümkün mü ve eğer öyleyse - nasıl?

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

yapıyorsun tüm dizin görünümü render olup olmadığını her bir kategori için ayrı yöntem için ihtiyacını soru. Bundan daha karmaşık ise, o zaman gerekli olabilir. – DickieBoy

cevap

2

kullanabilirsiniz yakut en define_method

Post::CATEGORIES.each do |category| 
    define_method category do 
    @posts = Post.where(category: category.to_s) 
    render :index 
    end 
end 
İlgili konular