0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Couldn't find Schedule without an IDを解決する

Posted at

rails初学者です。現在、オリジナルアプリを作成中で、削除機能をつけようとした時に、
Couldn't find Schedule without an IDという「IDがありませんよ!」 というエラーが出ました。

まず最初にbinding.pryで

schedules_controller
 binding.pry
 schedules = Schedule.find(params[:id])
 schedules.destroy

paramsの中身を確認したところ、
pramsにはidではなく、formatが代入されていました。

そこで、routes.rbを確認すると

routes.rb
resources :posts do
    resource :schedules, only: [:update, :edit, :destroy]
  end

とschedulesのresourceが単数系になっていて、このままではIDを付与してくれないので、resourcesの複数形に直し、

index.html.erb
resources :posts do
<% @schedules.order(:date).joins(:memory).each do |s| %>
            <tr>
              <td><%=  s.schedule %></td>
              <td><%= s.post.text  %></td>
              <td><%= link_to s.post.range, post_path(s.post) %></td>
              <td><%= s.post.time %></td>
              <td>[ <%=  link_to '編集する', edit_post_path(s.post,s) %> ]</td> 
              <td>[ <%= link_to '完了する', post_schedules_path(s.post,s), method: :delete, data:{ confirm: '本当に完了していいですか?' }%> ]</td>
            </tr>   
          <% end %> 

の完了するのリンクのpost_schedules_pathをpost_schedule_pathの単数系に直すと、無事解決しました。

反省:
エラーが出てきた時にidが無いと言われたのでparamsの中身を確認せずに、モデルやDBを色々確認していて、エラーを直すのに少し時間がかかってしまった。 次からはparamsをbinding.pryで見ることを忘れずにする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?