2016-03-18 131 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