Ruby on rails rails中友好URL的模型和控制器设计

Ruby on rails rails中友好URL的模型和控制器设计,ruby-on-rails,ruby,activerecord,friendly-id,Ruby On Rails,Ruby,Activerecord,Friendly Id,rails新手的另一个问题。我正在Rails3.x中使用友好的mysql 这是一个设计问题(在rails中可能很容易)。我期待着rails专家的建议。我正在构建一个图书馆列表应用程序。用户可以在其中按“大都会区”或“城市”查看图书馆。例如: 我希望有如下URL: www.list.com/library/san-francisco-bay-area 或 www.list.com/library/san-francisco-bay-area/palo-alto/ 在数据库中,我有表: librar

rails新手的另一个问题。我正在Rails3.x中使用友好的mysql

这是一个设计问题(在rails中可能很容易)。我期待着rails专家的建议。我正在构建一个图书馆列表应用程序。用户可以在其中按“大都会区”或“城市”查看图书馆。例如:

我希望有如下URL:

www.list.com/library/san-francisco-bay-area

www.list.com/library/san-francisco-bay-area/palo-alto/

在数据库中,我有表:

library
-------
id, name, city_id, slug
名字在这里被勾选,城市id是FK

city
----
city_id, name, metro_area_id, slug
名字在这里被勾选,metro_area_id为FK

metro_area 
----------
metro_area_id, name, state, slug
名字就在这里

因此,当用户将浏览器指向www.list.com/library/san-francisco-bay-area/palo-alto时

我想得到旧金山湾区/帕洛阿尔托的图书馆名单。但我的库表模型只包含用于库名称的slug。因此,如何解析此URL以查找可用于库模型和控制器以获取列表的城市id

请记住,我不能仅仅依靠城市的名字。我必须找到位于“旧金山湾区”地铁站的“帕洛阿尔托”的城市id。由于地铁区域和城市的slug在其他表格中,那么设计模型和控制器的最佳方法是什么

控制器的显示方法是:

def show
    @user = Library.find(params[:id])

    respond_to do |format|
       format.html # show.html.erb
       format.json { render json: @library }
    end
end
模型是

class Library < ActiveRecord::Base
  attr_accessible :name, :city_id, :slug
  extend FriendlyId
  friendly_id :name, use: :slugged
end
类库

这将不符合我的友好URL要求。因此,我非常感谢专家们的建议:)

也许您已经找到了解决方案,我也是rails新手,所以我只是猜测这会奏效

因为你想展示两种不同型号的子弹。我假设显示ID的方式如下

www.list.com/libraries/:id/cities/:id/metro_areas/:id
这可以通过编辑管线文件来完成,方法是添加

至于只显示两个ID,如

www.list.com/library/:city_id/:metro_area_id
Rails guide将其称为

之后,只需将ID转换为slug

我也在FriendlyId的文档中找到了你的案例

希望能有帮助