2016-03-18 5 views
0

Update: ВместоПользовательские Rails маршрут после создания объекта

@company = Company.find(params[:company_id] в Reimbursements New Action

Я использовал @company = Company.find_by_name(params[:company_id]

Это заменил id в URL с name, но по-прежнему требует /reimbursements/new в то конец URL-адреса. Есть предположения?

Обзор: У меня есть Companies контроллер/модель и Reimbursements контроллер/модель

Company has_many reimbursements

Company имеет name а

выпуска: Когда новая компания создана ссылка для новых reimbursements бланк:

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

Этот URL очень долго, и я предпочел бы это:

localhost:3000/companies/company.name 

Возможно ли это? Как мне это сделать? Заранее спасибо!

+0

Вы можете использовать все, что захотите. Маршруты - это просто регулярные выражения. Однако реальный вопрос заключается в том, что это хорошая идея. Short url - маркетинговая причуда. – max

+0

Можете ли вы проверить обновление, которое я разместил? Я был бы признателен за любую проницательность – szier

ответ

0

Возможно, вы захотите добавить поле постоянных ссылок в Company Model.

Затем используйте маршруты,

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

Сейчас в контроллере, найти компании быть вместо PermaLink Id идентификатор.

0

Я думаю, что было бы

get /companies/:name => reimbursements#new

Rails по умолчанию делает маршрут к определенному действию контроллера первого маршрут к этому действию он видит поэтому убедитесь, что вы положили это выше любых маршрутов, которые могли бы заменить его (т.е. любые маршруты возмещения, которые у вас могут быть). Как предложил Макс, это не очень хорошая форма, и идентификатор компаний не будет передаваться через параметры этой структуры.

+0

Ваш метод не работал для меня. Можете ли вы проверить обновление, которое я разместил? – szier

+0

Как насчет этого не получилось? также является 'Company.find_by_name (params [: company_id])' определенно работает? Похоже, вы говорите AR, чтобы искать что-то по имени и давая ему идентификатор – SomeSchmo