我想要实现的是类似于 Github 的路由方式。例如,我有一个名为“问题”的项目导致 URL /hjuskewycz/question。所以我的目标是让路线的第一段是用户名,第二段是项目的名称。
我尝试了几种不同的方法,这是我现在坚持的方法:
scope ":username" do
resources :projects, :path => "" do
resources :pictures
end
end
使用
project_path :username => project.owner.username, :id => project.to_param
按预期工作。然而,总是指定用户名是很乏味的,尽管它总是所有者的用户名。我非常喜欢
project_path(:id => project.to_param)
我知道 default_url_options 和 url_for 并深入研究了代码。但是,polymorphic_url 不使用 default_url_options。
我在 routes.rb 中试过:
resources :projects, :path => "", :defaults => {:username => Proc.new { "just_testing" }}
因为您可以使用 proc 进行约束,但也无法正常工作。
我在 project.rb 中尝试过
def to_param
"#{owner.username"/#{project.title}"
end
我已经在这个问题上花费了太多时间,而我目前的方法使用一种方便的方法来添加 :username 参数。尽管如此,我认为到处使用这种方法只是为了添加一个条目很臭(代码味道不好)。我想知道这个问题是否有更优雅的解决方案。