Ruby更新操作不起作用

时间:2010-08-18 11:18:23

标签: ruby-on-rails

我有一个模型:new和它的控制器:news

新闻控制器方法:

    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 %>

它工作正常,没有错误,字段显示在文本框中,但如果我单击提交按钮我给出了未知的操作错误

2 个答案:

答案 0 :(得分:3)

我认为应该是

:URL =&GT; new_path(@new)

不是

:URL =&GT; news_path(@new)

虽然因为你把你的模型叫做“新”而我只是想着它而感到困惑。

我强烈建议您更改型号名称(以及控制器和视图)以避免混淆。在“新”动作的上下文中,“新”用于轨道。如果你不改变它,你会有“new_new_path”和“update_new_path”之类的东西,这会让你在某些时候哭泣。

另外,谈论'新'并没有多大意义。 “新闻”的单数不是“新闻”。它在整个过程中非常混乱,在你围绕它构建更多东西之前就把它排除在外。

我建议使用“文章”或类似的模型名称。

答案 1 :(得分:0)

试试这个:

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