2016-03-18 15 views
0

aktualisieren: StattIndividuelle Rails Route nach Objekterstellung

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

I verwendet @company = Company.find_by_name(params[:company_id]

Das die id in der URL mit dem name ersetzt, erfordert aber immer noch /reimbursements/new bei der Ende der URL Irgendwelche Gedanken?

Übersicht: Ich habe ein Companies Controller/Modell und ein Reimbursements Controller/Modell

A Company has_many reimbursements

A Company auch ein name hat

Das Problem: Wenn ein Neue Firma wird erstellt der Link zu der neuen reimbursements Form ist

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

Diese URL sehr lang ist und ich kann es sein, bevorzugen:

localhost:3000/companies/company.name 

Ist das möglich? Wie würde ich das machen? Danke im Voraus!

+0

Sie können verwenden, was Sie wollen. Routen sind nur reguläre Ausdrücke. Die eigentliche Frage ist jedoch, ob es eine gute Idee ist. Kurze URLs sind eine Marketing-Mode. – max

+0

Können Sie das von mir gepostete Update überprüfen? Ich würde jede Einsicht schätzen – szier

Antwort

0

Möglicherweise möchten Sie ein Permalink-Feld im Firmenmodell hinzufügen.

Dann Routen als

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

Jetzt im Controller verwenden, Company werden permalink statt id Id finden.

0

ich denke, es

get /companies/:name => reimbursements#new

Rails standardmäßig machen die Route zu einem bestimmten Controller-Aktion die erste Route zu dieser Aktion wäre es sieht so stellen Sie sicher, dies vor allen Routen setzen, die es außer Kraft setzen könnten (dh etwaige Erstattungswege, die Sie haben könnten). Wie Max jedoch vorgeschlagen hat, ist dies keine großartige Form und die Firmen-ID würde nicht durch Params mit dieser Struktur übergeben.

+0

Ihre Methode hat nicht für mich funktioniert. Können Sie bitte das Update, das ich gepostet habe, auschecken? – szier

+0

Was ist damit nicht funktioniert? ist auch 'Company.find_by_name (params [: company_id])' definitiv funktioniert? Es sieht so aus, als ob du AR sagst, nach einem Namen zu suchen und ihm eine ID zu geben – SomeSchmo

Verwandte Themen