2012-05-11 75 views
0

我有一個表單來爲組織創建新事件。路由是:Rails 3路徑無法按預期方式工作

resource :organisations do 
    resource :events 
end 

當我編輯的事件,就成功,我回路由在事件控制器秀行動,例如:

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 

當我創建一個事件,我也希望它重定向到事件表明動作,實現如下:

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 

然而,這將產生以下錯誤:No route matches {:action=>"show", :controller=>"events"}

這是因爲URI中沒有事件ID /名稱,據我所知。這可能是我對路徑生成缺乏理解,但我如何才能達到我想要的結果?

+0

我認爲你需要在傳球組織ID到redirect_to的organisation_event_path因爲在組織中創建事件,這樣的組織是組織ID識別。 –

回答

0

我不確定爲什麼你的第一個重定向工作,但organisation_event_path將需要兩個參數,因爲它是從兩個資源 - 組織和事件的ID創建路徑。所以,你應該這樣稱呼它:

organisation_event_path(@organization, @event) 
相關問題