Ruby on rails 在集合之外创建操作

Ruby on rails 在集合之外创建操作,ruby-on-rails,actioncontroller,ruby-on-rails-5,Ruby On Rails,Actioncontroller,Ruby On Rails 5,我想动态创建一些动作,如下所示 但由于代码不在方法中,我得到以下错误:“未定义的局部变量或方法” 这有可能吗?如果有,怎么可能 class Post < ActiveRecord::Base CATEGORIES = [:music,:movies,:art,:jokes,:friends,:whatever].freeze end class PostsController < ApplicationController Post::CATEGORIES.each do

我想动态创建一些动作,如下所示

但由于代码不在方法中,我得到以下错误:“未定义的局部变量或方法”

这有可能吗?如果有,怎么可能

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
class Post
你可以用ruby的


如果您所做的只是呈现索引视图,我会质疑您是否需要为每个类别使用单独的方法。如果它比这更复杂,那么它可能是需要的。如果您所做的只是呈现索引视图,我会质疑您是否需要为每个类别使用单独的方法。如果它比这更复杂,那么可能需要它。
Post::CATEGORIES.each do |category|
  define_method category do
    @posts = Post.where(category: category.to_s)
    render :index
  end
end