Ruby Sinatra HTTP';把';方法
此处的PUT操作出错,表单已被处理,但更新的字段未被保存 我做了Sinatra用户正在做的事情,添加了“\u方法”让Sinatra认识到这是一个HTTP PUT操作。有人能发现这里有什么错误吗Ruby Sinatra HTTP';把';方法,ruby,http,sinatra,Ruby,Http,Sinatra,此处的PUT操作出错,表单已被处理,但更新的字段未被保存 我做了Sinatra用户正在做的事情,添加了“\u方法”让Sinatra认识到这是一个HTTP PUT操作。有人能发现这里有什么错误吗 # edit get '/entries/*/:id/edit' do @entry = Entries.get(params[:id]) @title = "edit" erb :edit, :layout => :edit_layout end # update put '/ent
# 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>
#编辑
获取“/entries/*/:id/edit”do
@entry=Entries.get(参数[:id])
@title=“编辑”
erb:edit,:layout=>:edit\u layout
结束
#更新
将“/entries/:id”放入
@entry=Entries.get(参数[:id])
if@entry.save
重定向“/entries/id=#{@entry.id}”
其他的
重定向“/enewsletters”
结束
结束
内容
您似乎没有对@entry
进行任何更新,您只是从params获取id为的特定条目。你在用ActiveRecord吗?如果是,请尝试@entry.update_属性(params[:entry])
,而不是@entry.save
编辑:我猜您没有使用AR,因为我刚刚注意到
.get
呼叫。无论您使用什么ORM,都必须有一种简单的方法来更新属性,然后保存记录。arrhh..谢谢@更新_属性(参数[:entry])有效!我正在使用datamapper。如果这解决了您的问题,我将非常感谢您将此标记为未来读者的正确答案。。。为了我的自私自利。