有没有办法可以在 polymorphic_path 中使用参数来传递 slug?
例如,我有以下路线
路线.rb
MyApp::Application.routes.draw do
match "movies/:slug" => 'movies#show', :as=>:movie
match "series/:slug" => 'series#show', :as=>:series
end
我有以下型号:
电影.rb
class Movie < ActiveRecord::Base
has_many :cast_members, :as=>:media_item
end
系列.rb
class Series < ActiveRecord::Base
has_many :cast_members, :as=>:media_item
end
演员表.rb
class CastMember < ActiveRecord::Base
belongs_to :media_item, :polymorphic=>true
end
这很好用,我可以从演员那里引用我的电影,反之亦然,就像正常的 has_many/belongs_to 关系一样。我也可以在我的 cast_member 视图中执行此操作:
*cast_members/show.html.erb*
link_to (@cast_member.movie.title, movie_path(@cast_member.movie.slug))
返回“电影/电影标题”
我能做到
*cast_members/show.html.erb*
link_to (@cast_member.movie.title, polymorphic_path(@cast_member.media_item))
但这会返回“/movies/24”
我尝试以不同的方式将 slug 作为项目传递给 polymorphic_path,例如
link_to (@cast_member.movie.title, polymorphic_path(@cast_member.media_item, @cast_member.media_item.slug))
link_to (@cast_member.movie.title, polymorphic_path(@cast_member.media_item, :slug=>@cast_member.media_item.slug))
link_to ([@cast_member.movie.title, polymorphic_path(@cast_member.media_item, @cast_member.media_item.slug]))
但这些都返回错误或带有 id 的路径。
如何让 polymorphic_path 使用 movie.slug 而不是 id?