2016-03-18 127 views
0

更新:與其自定義Rails的路線

Reimbursements New Action

@company = Company.find(params[:company_id]我用@company = Company.find_by_name(params[:company_id]

這與name的URL取代id但仍需要/reimbursements/new在網址末尾。有什麼想法嗎?

概述:我有一個Companies控制器/模型和Reimbursements控制器/模型

Company has_many reimbursements

Company具有name以及

的問題: 當新公司創建鏈接到新的reimbursements表單是

localhost:3000/companies/:id/reimbursements/new 

此URL是很長,我寧願它是:

localhost:3000/companies/company.name 

這可能嗎?我會如何去做這件事?提前致謝!

+0

你可以使用任何你想要的。路由只是正則表達式。但真正的問題是如果這是一個好主意。短網址是營銷時尚。 – max

+0

您可以結帳我發佈的更新嗎?我將不勝感激 – szier

回答

0

您可能希望在公司模型中添加固定鏈接字段。

然後使用路由作爲

localhost:3000/companies/:permalink/reimbursements/new 

現在控制器,找到公司進行,而不是永久鏈接的ID。

0

我認爲這將是

get /companies/:name => reimbursements#new

的Rails默認爲使路線有一定控制作用,第一路由到動作它看到所以一定要確保你把這個可能重寫它的任何路由以上(即你可能有的任何報銷路線)。正如馬克斯建議,但這不是很好的形式,公司ID不會通過這個結構params

+0

您的方法對我無效。你可以請結帳我發佈的更新? – szier

+0

它沒有奏效?也是'Company.find_by_name(params [:company_id])'絕對有效?它看起來像告訴AR通過名稱搜索某個內容並給它一個id – SomeSchmo