我的项目设置在每个电影有很多类型,每个类型有很多电影。例如,电影可以有一个或多个类别的类型:动作,喜剧,戏剧。我想要做的是为列出属于它们的电影的每个类型创建视图,类似于默认索引操作的设置方式:
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
我意识到为每个类型创建索引操作都不会很好地扩展,因此我想知道动态创建这些页面的最佳解决方案是什么。我已就该主题进行了一些研究,但其中大部分都是为了创建嵌套路线,因为我更倾向于采取行动视图。
答案 0 :(得分:1)
首先,您需要路线:
get '/:genre', to: 'movies#genre_movies'
然后你的行动将会是:
def genre_movies
@movies = Genre.find_by(name: params[:genre]).movies
render 'index'
end