Ruby Sinatra HTTP';把';方法

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

此处的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 '/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。如果这解决了您的问题,我将非常感谢您将此标记为未来读者的正确答案。。。为了我的自私自利。