2011-09-19 45 views
1

創建自定義POST操作我想創造我的文章對象的自定義POST操作。如何Rails3中

在我routes.rb,我已按以下方式操作:

resources :articles do 
    member do 
    post 'update_assigned_video' 
    end 
end 

在我articles_controller.rb我:

def update_assigned_video 
    @article = Articles.find(params[:id]) 
    @video = Video.find(:id => params[:chosenVideo]) 
    respond_to do |format| 
    if [email protected]? 
    @article.video = @video 
    format.html { redirect_to(@article, :notice => t('article.updated')) } 
    else 
    format.html { render :action => "assign_video" } 
    end 
end 

然後在我看來,我做一個形式是這樣的:

<%= form_for @article, :url => update_assigned_video_article_path(@article) do |f|%> 
    [...] 
    <%= f.submit t('general.save') %> 

該視圖呈現(所以我認爲他知道路線)。但點擊提交按鈕帶來了以下錯誤信息:

No route matches "/articles/28/update_assigned_video" 

rake routes知道它也:

update_assigned_video_article POST /articles/:id/update_assigned_video(.:format) {:action=>"update_assigned_video", :controller=>"articles"} 

我在做什麼錯? 這是錯誤的做法嗎?

+0

它是錯字'routes.rb'? ':aricles'? – Alex

+0

你的'rake routes'是否顯示指定的路線? –

+0

@alex:錯字只是在這裏(我現在糾正)| @查克:是的,它是在耙路線(我加的是輸出的問題) –

回答

4

您的form_for將執行PUT請求,而不是POST請求,因爲它正在對現有對象起作用。我會建議改變路線在你的路由從這個文件:

post 'update_assigned_video' 

要這樣:

put 'update_assigned_video' 
+0

是的,工作。謝謝! –