2010-08-18 94 views
0

我有一個模型,新及其控制器:新聞紅寶石更新動作不靈

新聞控制器方法:

def edit 
    @new = New.find(params[:id].to_i) 
    end 

    def update 
    @new = New.find(params[:id].to_i) 
    @new.update_attributes(params[:new]) 
    flash[:notice] = "Sikeresen frissítve" 
    redirect_to news_path 
    rescue ActiveRecord::RecordInvalid 
    flash[:error] = "Valami hiba lépett fel" 
    redirect_to edit_news_path(@new) 
    end 

這裏是edit.html.erb

<%= error_messages_for :news %> 

<% form_for :new, :url=>news_path(@new), :html=>{:method=>:put} do |m|%> 

    <p> <%= m.label(:title,"title: ") %> 

    <%= m.text_field(:title) %></p> 

    <p> 

    <%= m.label(:text, "text: ") %> 

    <%= m.text_area(:text) %> 

    </p> 

    <%= submit_tag "Save" %> 

<% end %> 

它的工作正常,沒有錯誤,該字段出現在文本框中,但如果我點擊提交按鈕,我給了未知的動作錯誤

回答

3

我覺得應該是

:URL => new_path(@new)

:URL => news_path(@new)

雖然我很困惑,只是想着它,因爲你叫你的模型「新」。

我強烈建議您更改您的型號名稱(以及控制器和視圖)以避免混淆。在「新」行動中,「新」用於導軌。如果你不改變它,你會得到像「new_new_path」和「update_new_path」這樣的東西,這會讓你在某個時候哭。

另外,談論「一個新的」並沒有什麼意義。 「新聞」的單數不是「新」。這是非常困惑的,現在就排除它,然後再圍繞它建立更多的東西。

我推薦「文章」或類似的東西作爲模型的名稱。

+0

如果OP想要堅持新聞作爲他的控制器名稱,他可以改變inflector使「新聞」不可數 – 2010-08-18 13:33:50

0

試試這個:

form_for :new, :url=>{ :action => "update" }, :html=>{:method=>:put} do |m|