form_withを使いsign in のページを作りたいです。
書籍’’Ruby on Railsチュートリアル’’に従って現在第7章を勉強中です。
ruby_version: 3.0.3
rails_version: 7.01
書籍に従い以下のようにコードを作成しました。
ruby
1./config/routes.rb 2 3Rails.application.routes.draw do 4 5 get '/login', to: 'sessions#new' 6 post '/login', to: 'sessions#create' 7 delete '/logout', to: 'sessions#destroy' 8 9end
ruby
1./app/controllers/sessions_controller.rb 2 3class SessionsController < ApplicationController 4 def new 5 end 6 7 def create 8 render 'new' 9 end 10 11 def destroy 12 end 13end
html
1<% provide(:title, 'Log In') %> 2<h1>Log in</h1> 3<div> 4 <%= form_with(url: login_path, scope: :session, local: true) do |f| %> 5 <div> 6 <%= f.label :email %> 7 <%= f.email_field :email %> 8 </div> 9 <div> 10 <%= f.label :password %> 11 <%= f.password_field :password %> 12 </div> 13 <%= f.submit "Log In" %> 14 <% end%> 15</div>
Chromeでの出力結果が以下の通りです
<form action="/login" accept-charset="UTF-8" method="post"> <input type="hidden" name="authenticity_token" value="8YGGAtPuI3nSkXBVViKhcYhLhLhOYNRE-me5socoo_hse0ZsDBHcU5QmnZJuPZ4monX7kiZrO5t7uIKIKCYQ3g" autocomplete="off"> <div> <label for="session_email">Email</label> <input type="email" name="session[email]" id="session_email"> </div> <div> <label for="session_password">Password</label> <input type="password" name="session[password]" id="session_password"> </div> <input type="submit" name="commit" value="Log In" data-disable-with="Log In"> </form>
ターミナルでbin/devを走らせローカルサーバーを起動しています。
問題点
どの様な値を入力したとしてもボタンが反応せず何も起きません。
試したこと
createアクションが呼ばれたことがわかるようにメッセージをログアウトさせるコードを書きましたが(puts "message")、ボタンを押した際に何もログアウトされず、ボタンを押したときにcreateアクションが呼ばれていないことがわかりました。
アクションの発火方法についてよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。