現在ruby on railsでWebアプリケーションを作成しています。
ユーザーログインの機能(session)をつけたのですが、ログアウトでエラーが発生してしまい立ち往生しています。
エラー内容
ActionController::UrlGenerationError in Toppages#index No route matches {:action=>"destroy", :controller=>"sessions"}, missing required keys: [:id]
エラーの出ている箇所(コード)
<%= link_to 'ログアウト', session_path, method: :delete %>
ルーター
Rails.application.routes.draw do root to: 'toppages#index' resources :sessions, only: [:new, :create, :destroy] resources :users, only: [:index, :show, :new, :create] resources :novels, only: [:create, :destroy] end
コントローラー
def destroy session[:user_id] = nil flash[:success] = 'ログアウトしました' redirect_to root_url end
$rails routesでpathを確認したところ「session_path」と表示されました。どこが間違っているのかわからず泣き崩れそうです。ご教授いただきたいです、よろしくお願いします。
普通にトップページは表示されますか?
- ToppageControllerにIndexメソッドがあること
- toppages/index.html.erbがあること
を確認しておきたく!
ToppagesController
```
class ToppagesController < ApplicationController
def index
if logged_in?
@novel = current_user.novels.build
@novels = current_user.novels.order(id: :desc).page(params[:page])
end
end
end
```
toppages/index.html.erb
```<% if logged_in? %>
<%= current_user.name %>
<%= render 'novels/novels', novels: @novels %>
<% else %>
<div class="text-center">
<h1>ShortNovel</h1>
</div>
<% end %>
```
上記二つは作成しているのですが、トップページは表示されません。
ちなみに、
<%= link_to 'ログアウト', session_path, method: :delete %>
エラーの原因と思われるこのコードの「session_path」を削除し、
<%= link_to 'ログアウト', method: :delete %>
と書き直すとトップページは表示されます。
回答1件
あなたの回答
tips
プレビュー