rails新手的另一个问题。我在 rails 3.x 中使用 friendly_id gem 和 mysql
这是一个设计问题(在 Rails 中可能很容易)。我期待 Rails 专家的建议。我正在构建一个图书馆列表应用程序。用户可以在其中按“都会区”或“城市”查看图书馆。例如:
我希望有这样的网址:
www.list.com/library/san-francisco-bay-area
或者
www.list.com/library/san-francisco-bay-area/palo-alto/
在数据库中我有表:
library
-------
id, name, city_id, slug
名字在这里打了,city_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
我希望获得 san-francisco-bay-area/palo-alto 的图书馆列表。但是我的库表模型仅包含库名称的 slug。那么如何解析这个 URL 以找到可以在库模型和控制器中使用的 city_id 来获取列表。
请记住,我不能只依赖城市的名称。我必须找到位于地铁“旧金山湾区”的“帕洛阿尔托”的 city_id 。由于 metro_area 和 city 的 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 要求。所以我会感谢专家的建议:)