3
我仍然陷入了Rails的束縛,我遇到了一個我認爲應該很容易的問題。希望有人能告訴我我的方式的錯誤。添加路由到Rails 3控制器
我讀過這篇文章:How to add a custom RESTful route to a Rails app?有很多很好的信息(對於Rails 2,我使用Rails 3),但我似乎無法讓我的代碼工作。下面是我在哪裏:
我已經附加我的routes.rb如下:
resources :proposals do
member do
put :change_status
end
end
我已經附加我proposals_controller.rb如下:
def change_status
@proposal = Proposal.find(params[:id])
respond_to do |format|
if @proposal.change_status
format.html { redirect_to(@proposal, :notice => 'Proposal status was changed.'') }
format.xml { head :ok }
else
format.html { redirect_to(@proposal, :error => 'Proposal failed to transition.') }
format.xml { render :xml => @proposal.errors, :status => :unprocessable_entity }
end
end
end
最後,在我的查看,我正在訪問它如下:
<%= link_to "Deliver to Client", change_status_proposal_path(@proposal) %>
但是,當我訪問我的網站時,通過去
http://localhost:3000/proposals/4/change_status
我得到以下錯誤:
路由錯誤
沒有路由匹配 「/提議/ 4/change_status」
我認爲我在做一些愚蠢的事在這裏,因爲這應該是非常基本的,但我似乎無法超越它。我很抱歉提出這樣一個基本問題,但如果有人有任何建議,這將是一個巨大的幫助。
在此先感謝!
啊,謝謝你的澄清。我仍然試圖在Rails使用它時獲得PUT和GET之間的區別。在我想要做的事情中,GET是否合適?我在技術上影響與這個動作,我走上意思是我應該使用PUT對象上的變化,但我可能已經明白它是錯誤的。再次感謝您的幫助! – 2011-03-02 14:48:47
是的,我會說PUT是合適的!你絕對是在正確的軌道上:GET來檢索,POST創建,PUT來改變和刪除東西。 – Wukerplank 2011-03-02 14:51:50
謝謝,我想我現在已經明白了! – 2011-03-02 14:53:49