2011-10-19 10 views
0

私はいくつかのあなたが見ることができるようにパスのURLヘルパーを変更しますか?

= form_for(@event, :url => group_event_path(@event.group_id, @event)) do |f| 

を足場生成し、私はこの

resources :groups do 
    resources :events 
end 
のように見えるネストされたリソースのルートを定義したに収まるようにしようとしている次のコードを持っています

上記のform_for行に戻ります。デフォルトのRailsスキャフォールディングは、#newと#editで使用される_formを生成するために上記と同様のコードを使用します。 group_events_path(@ event.group_id)

  • UPDATE:group_event_path(@ event.group_id、@event)
  • を、これは私に提示問題はのform_forは、CREATEこれら二つの経路

    • に提出しなければならないということです

      group_event(s)_pathヘルパーの仕組みを変更することでこれを単純化する方法はありますか?

    答えて

    0

    あなたは多型form_for構文を使用している場合、これはそれを修正します:

    = form_for([@group, @event]) do |f| 
    

    その@eventオブジェクトがデータベースに永続化されている場合さて、それはupdateルートを使用し、そうでない場合は、それが使用されますcreateルート。

    あなたは、通常のform_forコールと同じことを行うことができます

    = form_for(@event) do |f| 
    

    推論をRailsのものとは異なるものにするためにURLをカスタマイズする以外:urlオプションを指定する理由は絶対にありません。

    +0

    私には最初のアプローチがありましたが、この1行だけで2回目のデータベース検索を行うのは過度のようでした。早すぎる最適化だと思います。理想的には、 '@ event.group_id'を見てパスを構築するための2番目のアプローチをマップしたいと思います。例外が発生したときに例外をスローします –

    関連する問題