2010-08-18 62 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|