另一个来自rails新手的问题。我在rails 3.x中使用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时
我想要旧金山湾区/帕洛阿尔托的图书馆名单。但我的库表模型只包含库名的段塞。那么,如何解析这个URL以找到可以在库模型和控制器中使用的city_id来获取列表。
请记住,我不能只依靠城市的名字。我必须找到位于旧金山湾区的“帕洛阿尔托”(Palo)的city_id。由于用于metro_area和city的段塞在其他表中,那么设计模型和控制器的最佳方法是什么。
控制器的显示方法是:
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要求。因此,我希望得到专家的建议:)
发布于 2013-01-01 04:26:58
也许你已经找到了你的解决方案,我对rails也很陌生,所以我猜想这会解决问题。
因为你想展示两种不同型号的子弹。我想显示I的方式应该是
www.list.com/libraries/:id/cities/:id/metro_areas/:id这可以通过添加嵌套资源编辑路由文件来完成
至于只显示两个ids,如
www.list.com/library/:city_id/:metro_area_idRails指南将其称为动态段
在那之后,这只是一个把ids转换成子弹的问题。
我还在FriendlyId的文档中找到了针对您的案例的这。
希望它能帮上忙
https://stackoverflow.com/questions/12126523
复制相似问题