だから、私は Ruby/Sinatra の初心者で、たくさんのコードアカデミーのレッスンなどを行いました。実際に何かを構築するまでは、いくつかのコア コンセプトを本当に理解できないと判断しました。
Sinatra で To Do リスト アプリを作成するためのチュートリアルを見つけましたが、編集と削除の機能にたどり着くまでは、すべてうまくいきました。データベースへの読み書きはできますが、編集または削除しようとすると、「メモが見つかりません」にスキップします。
私はこれを自分で理解できなかったので、開発者の友人に尋ねました。私が彼にコードを送ったとき、すべてが彼にとって完全にうまくいきました! 考えられるいくつかの修正を試みましたが、終わりがありませんでした。自分のコードのどこかにランダムな間違いがあった場合に備えて、男の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
edit.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 %>