2011-11-28 40 views
2

我在航線都有這樣的:的Rails 3.0.10,客戶路線,郵政的form_for標記

resources :events do 
    collection do 
    post 'moderate' 
    end 
end 

耙路線告訴我:

moderate_events POST /events/moderate(.:format) {:controller=>"events", :action=>"moderate"} 

我有一個 「管理」 控制器簡單列出需要調節的事件:

@modevents = Event.where('moderated <> 1') 

到目前爲止,所有未經審覈的事件都可以在競爭中展示女:

<%- @modevents.each do |me| -%> 
    Display Stuff here 
<%- end -%> 

我想提出一個形式的循環,更新調整後值,但對我的生活我不能工作,以放什麼的form_for - 我曾嘗試:

<%= form_for me, :url => moderate_events_path do |f| %> 
    <%= f.submit %> 
<% end %> 

返回的HTML是:

<form accept-charset="UTF-8" action="/events/moderate" class="edit_event" id="edit_event_1" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="_method" type="hidden" value="put" /> 

當我點擊 「提交」 按鈕,我得到以下錯誤:

Couldn't find Event with ID=moderate 

的解決方案是非常簡單的,在改變航線「後」到「放」:

resources :events do 
    collection do 
    put 'moderate' 
    end 
end 

而現在它的作品,因爲它應該。更新甚至定製的都是「放」功能。

+0

這裏有問題嗎? –

+0

當我開始打字時,我已經寫完了,但在寫作時我已經完成了。所以我想我會把它留在這裏,爲了別人的利益。從外觀上看,別人已經發現它很有用。 –

+0

將最後三個部分放在註釋中,然後是Q/A格式...但不需要關閉,這是一個有用的問題 – DGM

回答

0

答案其實在上面的文字底部,但也許不是很明顯。如果你正在更新的東西,你應該使用「放」不張貼。

0

您還可以使用POST通過指定:

<%= form_for me, :url => moderate_events_path, :method => :post do |f| %> 

但在此之前,作爲所述,這種區分需要更新和創造之間進行。 rails中的標準是update == put,並創建== post。