我有一个模型: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 %>
它工作正常,没有错误,字段显示在文本框中,但如果我单击提交按钮我给出了未知的操作错误
答案 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|