Rails - 根据类别索引记录

时间:2014-11-11 17:48:55

标签: ruby-on-rails view controller actionview

我的项目设置在每个电影有很多类型,每个类型有很多电影。例如,电影可以有一个或多个类别的类型:动作,喜剧,戏剧。我想要做的是为列出属于它们的电影的每个类型创建视图,类似于默认索引操作的设置方式:

class Movie < ActiveRecord::Base
    attr_accessor :name
    has_many :genreships
    has_many :genres, through: :genreships

    extend FriendlyId
    friendly_id :name, use: :slugged
end

class Genreship < ActiveRecord::Base
    belongs_to :movie
    belongs_to :genre
end

class Genre < ActiveRecord::Base
    attr_accessor :name
    has_many :genreships
    has_many :movies, through: :genreships

    extend FriendlyId
    friendly_id :name, use: :slugged
end

电影控制器

def index
  @movies = Movie.all
end

电影索引视图

<% @movies.each do |movie| %>
  ...
<% end %>

每个基于流派的网址都是这样的:localhost:3000/comedy

我意识到为每个类型创建索引操作都不会很好地扩展,因此我想知道动态创建这些页面的最佳解决方案是什么。我已就该主题进行了一些研究,但其中大部分都是为了创建嵌套路线,因为我更倾向于采取行动视图。

1 个答案:

答案 0 :(得分:1)

首先,您需要路线:

get '/:genre', to: 'movies#genre_movies'

然后你的行动将会是:

def genre_movies
  @movies = Genre.find_by(name: params[:genre]).movies
  render 'index'
end