2016-03-18 8 views
0

更新Reimbursements New ActionカスタムRailsのルート

で代わりの

@company = Company.find(params[:company_id]が、私はこれはnameとURLにidを置き換え@company = Company.find_by_name(params[:company_id]

を使用しますが、まだで/reimbursements/newが必要ですURLの最後。何かご意見は?

概要:私はCompanyCompany has_many reimbursements

Companiesコントローラ/モデルを持っているとReimbursementsコントローラ/モデルだけでなくname

問題があります。 とき新しい会社が作成された新しいreimbursementsへのリンクは

0です
localhost:3000/companies/:id/reimbursements/new 

このURLは非常に長いですし、私はそれが好む:

localhost:3000/companies/company.name 

が、これは可能ですか?これをどうやってやりますか?前もって感謝します!

+0

あなたは何でも自由に使えます。ルートは単なる正規表現です。しかし、本当の疑問はそれが良い考えであるかどうかです。短いURLはマーケティングの流行です。 – max

+0

私が投稿したアップデートをチェックアウトしてもよろしいですか?私はどんな洞察にも感謝します – szier

答えて

0

Company Modelにpermalinkフィールドを追加したい場合があります。

そして会社は、ID番号の代わりに固定リンクさ見つける、コントローラに今

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

としてルートを使用します。

0

は、私はあなたがそれを上書きしてしまうことがあります任意のルート上にこれを置くことを確認してください見て、それがそのアクションに特定のコントローラのアクションへの最初のルートをルートを作るに

get /companies/:name => reimbursements#new

Railsのデフォルトだと思います(あなたが持っているかもしれない償還ルート)。しかし、マックスが示唆したように、これは素晴らしい形ではなく、企業のIDはこの構造のパラメータを通さないでしょう。

+0

あなたの方法は私にとってはうまくいかなかった。投稿したアップデートをチェックアウトしていただけますか? – szier

+0

それはどうしましたか? 'Company.find_by_name(params [:company_id])'も間違いなく働いていますか?あなたが何かを名前で検索してIDを与えるようにARに指示しているようです – SomeSchmo