此处的PUT操作出现问题,表单已处理,但未保存更新的字段。
我已经做过Sinatra用户正在做的事情,为Sinatra添加“_method”以识别它是HTTP PUT动作。谁能在这里发现任何错误?
# edit
get '/entries/*/:id/edit' do
@entry = Entries.get(params[:id])
@title = "edit"
erb :edit, :layout => :edit_layout
end
# update
put '/entries/:id' do
@entry = Entries.get(params[:id])
if @entry.save
redirect "/entries/id=#{@entry.id}"
else
redirect "/enewsletters"
end
end
<!-- Edit form -->
<form action="/enewsletters/edit/<%= @entry.id %>" method="post">
<input name="_method" value="put" type="hidden"/>
<p>
<label>Content</label><br/>
<input type="text" name="entry[title]" value="<%= @enew.title %>">
</p>
<p>
<input type="submit" name="commit" value="update">
</p>
</form>
答案 0 :(得分:3)
您似乎没有对@entry
进行任何更新,您只是从params获取id为id的特定条目。你在使用ActiveRecord吗?如果是,请尝试@entry.save
。
@entry.update_attributes(params[:entry])
编辑:我猜你没有使用AR,因为我刚注意到.get
电话。无论您使用哪种ORM,都必须有一种简单的方法来更新属性,然后保存记录。