我有一個Rails 3.0應用程序,它具有一個簡單的投票機制,可以將計數添加到多個反對票中。我在routes.rb中設置了PUT路由,並在我的控制器中創建了一個方法來處理它。向下投票鏈接本身呈現正確,但點擊它給了我一個路由錯誤沒有路由匹配「/場/ 18/down_vote」錯誤。Rails 3.0:PUT成員路由上沒有路由錯誤
這裏是我的控制器代碼:
def down_vote
@venue = Venue.find(params[:id])
respond_to do |format|
if @venue.update_attribute(:mon_closed_accuracy_downvotes => @venue.mon_closed_accuracy_downvotes + 1)
format.html { redirect_to(:back, :flash => { :success => "Shenanigans were successfully called on #{ @venue.name }'s closing time." }) }
format.xml { head :ok }
else
format.html { render :action => 'show' }
format.xml { render :xml => @venue.errors, :status => :unprocessable_entity }
end
end
end
下面是該down_vote路線我的路線代碼:(對場地的名單內的部分)
resources :venues do
put 'down_vote', :on => :member
end
查看代碼:
<%= link_to 'Incorrect?', down_vote_venue_path(venue), :method => :put %>
同樣,視圖本身呈現良好,並且鏈接按預期呈現:
<a href="/venues/15/down_vote" data-method="put" rel="nofollow">Incorrect?</a>
任何想法?
你說得對。我誤解了API。可能會把這個問題與其他東西混雜在一起。對不起,關於:)你可以確認在應用程序日誌中,服務器確實收到了PUT請求嗎? – leonardoborges
不用擔心。 :)現在我正在查看日誌,看起來它實際上正在做一個GET請求,出於某種原因:在2011-11-28 01:01:41開始GET「/場館/ 18/down_vote」爲127.0.0.1 - 0500。奇怪的是,它認爲它會執行放置請求,因爲數據方法屬性按預期形成。 – huertanix
我仍然會切換到使用按鈕,因爲鏈接需要'GET'資源,並且可以右鍵單擊並在新選項卡/窗口中打開。 – leonardoborges