所以,我是 Ruby/Sinatra 的新手,上过很多 codecademy 课程之类的。我决定在我真正构建一些东西之前,我不会真正理解一些核心概念。
我找到了一个在 Sinatra 中构建待办事项列表应用程序的教程,一切都很好,直到我开始使用编辑和删除功能。我可以读写数据库,但每当我尝试编辑或删除时,它都会直接跳到“找不到注释”。
我自己想不通,所以我问了我的一个开发者朋友。当我将代码发送给他时,对他来说一切都很好!我们尝试了几种不同的可能修复方法,但没有结束。我什至从那家伙的github下载了代码,以防万一我自己的代码中的某个地方出现随机错误,但无济于事。
所以,我来这里寻求帮助!为什么这行不通!
澄清:这是一些代码,我认为问题可能出在哪里。在edit.erb 和delete.erb 中,无论它是什么都将转到else 语句并将我发送到“note not found”。它从数据库中正确读取,因为我的主页可以添加和显示注释。
召回.rb
get '/:id' do
@note = Note.get params[:id]
@title = "Edit note ##{params[:id]}"
erb :edit
end
put '/:id' do
n = Note.get params[:id]
n.content = params[:content]
n.complete = params[:complete] ? 1 : 0
n.updated_at = Time.now
n.save
redirect '/'
end
get '/:id/delete' do
@note = Note.get params[:id]
@title = "Confirm deletion of note ##{params[:id]}"
erb :delete
end
delete '/:id' do
n = Note.get params[:id]
n.destroy!
redirect '/'
end
编辑.erb
<% if @note %>
<form action="/<%= @note.id %>" method="post" id="edit">
<input type="hidden" name="_method" value="put">
<textarea name="content"><%= @note.content %></textarea>
<input type="checkbox" name="complete" <%= "checked" if @note.complete %>>
<input type="submit">
</form>
<p><a href="/<%= @note.id %>/delete">Delete</a></p>
<% else %>
<p>Note not found.</p>
<% end %>
删除.erb
<% if @note %>
<p>Are you sure you want to delete the following note: <em>"<%= @note.content %>"</em>?</p>
<form action="/<%= @note.id %>" method="post">
<input type="hidden" name="_method" value="delete">
<input type="submit" value="Yes, Delete It!">
<a href="/<%= @note.id %>">Cancel</a>
</form>
<% else %>
<p>Note not found.</p>
<% end %>