我正在尝试设置应用程序的基本路由和URL。我使用FriendlyId gem来获得更好看的网址。
在我的模型设计中,帐户有用户,帐户有农场。当用户登录时,我想将其重定向到myapp.com/account-name
。此页面应该是该帐户的服务器场的索引页面,以及其他一些选项。当他们点击服务器场时,我希望该页面转到myapp.com/account-name/farm-name
。
我该怎么做?这不完全是反RESTful的,不包括URL中的/ account或/ farm吗?如果是,那么我该怎么做才能让网址为myapp.com/account-name/farms/farm-name
?
现在我通过
正确显示myapp.com/account-name
get "/:id", to: "accounts#show", as: 'account'
但我不认为我可以扩展到包括农场。我认为它可以通过类似
的方式解决resource :account do
resource :farms
end
但是当我转到帐户时显示myapp.com/account.account-name
,当我执行类似redirect_to account_path(current_user.account)
的操作时,它会使用POST路由而不是GET路径。
我在Rails上体面的新人,对于误解感到抱歉。谢谢你的帮助!
答案 0 :(得分:1)
如果Farm belongs_to Account
(而不是HABTM),shallow nesting可能是一个很好的路线结构。
答案 1 :(得分:0)
我已经发现我可以通过在路线文件中再添加一行来实现这一目标
get "/:account_slug/:id", to: "farms#show", as: 'account_farm'
然后我可以使用
链接到视图中的服务器场<%= link_to farm.name, account_farm_path(account_slug: @account.slug, id: farm.slug)
我仍然对任何关于这是否是好的做法或任何其他建议的答案感兴趣。