有没有一种方法可以在polymorphic_path中使用参数来传递slug?
例如,我有以下路由
routes.rb
MyApp::Application.routes.draw do
match "movies/:slug" => 'movies#show', :as=>:movie
match "series/:slug" => 'series#show', :as=>:series
end
我有以下模型:
Movie.rb
class Movie < ActiveRecord::Base
has_many :cast_members, :as=>:media_item
end
Series.rb
class Series < ActiveRecord::Base
has_many :cast_members, :as=>:media_item
end
CastMember.rb
class CastMember < ActiveRecord::Base
belongs_to :media_item, :polymorphic=>true
end
这很好用,我可以从演员中引用我的电影,反之亦然,就像正常的has_many/ movie _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“
我尝试过以不同的方式将插件作为项传递给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?
https://stackoverflow.com/questions/15100651
复制相似问题