Rails:在不知道对象类的情况下获取路径/ url(多个模型的站点地图)

rub*_*atz 0 sitemap routing routes ruby-on-rails

我试图获取资源的URL或路径,而不知道它是哪个类.我的应用程序有很多资源可以呈现页面 - 想想国家,城市等等 - 具体来说,我想创建一个站点地图.我宁愿在这个阶段自己构建它而不是使用宝石.

我查看了本教程http://aspiringwebdev.com/sitemaps-in-rails-in-five-minutes/.作者只是创建一个路由和控制器,然后传递一个在XML视图中循环的实例变量.

在ERB中,它看起来像这样:

<% @countries.each do |entry| %>
  <url>
    <loc>http://yourdomain.com<%= country_path(entry) %></loc>
    <priority>0.7</priority>
  </url>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想要像这样处理5或6个模型.我最好在控制器中执行此操作:

@entries = [Country.all, City.all, OtherModel1.all, OtherModel2.all]
Run Code Online (Sandbox Code Playgroud)

...然后each对这个实例变量进行循环@entries.但我不知道该用什么代替country_path(...),city_path(...)等等.

谁可以帮忙?

fbe*_*ger 6

尝试使用polymorphic_path帮助器:

多态URL助手是在给定Active Record模型实例时智能解析到命名路由调用的方法.

<% @entries.each do |entry| %>
  <url>
    <loc>http://yourdomain.com<%= polymorphic_path(entry) %></loc>
    <priority>0.7</priority>
  </url>
<% end %>
Run Code Online (Sandbox Code Playgroud)

http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html