2012-05-11 11 views
0

組織の新しいイベントを作成するフォームがあります。ルーティングは次のとおりです。Rails 3パスが期待通りに機能しない

resource :organisations do 
    resource :events 
end 

私のようなバックイベントコントローラでshowアクションに成功Iルート上で、イベントを編集する場合:私は、イベントを作成すると

def update 
    @organisation = current_user.organisations.find(params[:organisation_id]) 
    @event = @organisation.events.find(params[:id]) 
    if @event.update_attributes(params[:event]) 
     # Handle a successful update. 
     flash[:success] = "Event updated" 
     redirect_to organisation_event_path 
    else 
     render 'edit' 
    end 
end 

が、私もそれをしたいですNo route matches {:action=>"show", :controller=>"events"}

0123:

def create 
    @organisation = current_user.organisations.find(params[:organisation_id]) 
    @event = @organisation.events.create(params[:event]) 
    if @event.save 
     flash[:success] = "Event added!" 
     redirect_to organisation_event_path 
    else 
     render 'new' 
    end 
end 

はしかし、これは次のエラーを生成します。以下のようなイベントにリダイレクトするためには実装され、作用を示します

これは、私が把握できる限り、URIにはイベントID /名前が含まれていないためです。パス生成の理解が不足している可能性がありますが、どうすれば結果が得られますか?

+0

私はあなたの組織が組織IDによって認識されるように、イベントが組織の下に作成されるため、redirect_toのorganisation_event_pathにして組織IDを渡す必要があると思います。 –

答えて

0

最初のリダイレクトがうまくいかなかった理由はわかりませんが、organisation_event_pathは2つのリソース(組織とイベント)のIDからパスを作成しているため、2つの引数が必要です。だから、あなたはこのようにそれを呼び出す必要があります。

organisation_event_path(@organization, @event) 
関連する問題