質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

3288閲覧

No route matches [POST] "/session/index"エラー

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/01/09 10:51

No route matches [POST] "/session/index"とエラーが出ました。

Log in 画面で自分のメールとパスワードを打ったら、こう出てしまいました。

今までは、ブラウザのエラーではないのですが、
1 error prohibited this user from being saved: Id can't be blank
とLog in 画面でボタンを押した時にエラーが出て、それで使用を変更したらこうなりました。

deviseとgem 'bcrypt', '~> 3.1.7'を使っています、またscaffoldも使っています。
前の仕様のエラーでは、
users.ymlにユーザーデータが何も記載されていないのがエラーの原因だと考えました。
なので
id、 name、emailodyssey.yh0204@gmail.com、 encrypted_passwordを記入しようと思ったのですが、encrypted_passwordは暗号化されたものなので、自分で作り方がわかりませんでした。

今回のエラーがencrypted_passwordのものなのか、単にルート指定のエラーなのかわかりません。どう直したら良いでしょうか?

session_controller.rb(Log in の部分)には

class SessionController < ApplicationController skip_before_action :user_logged_in? def index @user = User.new end def create @user = User.find_by(email: user_params[:email]) if @user && @user.authenticate(user_params[:password]) reset_user_session session[:user] = @user.id redirect_to params[:referer].present? ? params[:referer] : users_path else @user = User.new flash.now[:referer] = params[:referer] flash.now[:error] = true render :index end end def delete reset_user_session redirect_to session_index_url end private def user_params params.require(:user).permit(:email, :password) end end

と書き、
users_controllerr.rbには

class UsersController < ApplicationController before_action :set_user, only: [:show, :edit, :update, :destroy] # GET /users # GET /users.json def index @users = User.all end # GET /users/1 # GET /users/1.json def show end # GET /users/new def new @user = User.new end # GET /users/1/edit def edit end # POST /users # POST /users.json def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } format.json { render :show, status: :created, location: @user } else format.html { render :new } format.json { render json: @user.errors, status: :unprocessable_entity } end end end # PATCH/PUT /users/1 # PATCH/PUT /users/1.json def update respond_to do |format| if @user.update(user_params) format.html { redirect_to @user, notice: 'User was successfully updated.' } format.json { render :show, status: :ok, location: @user } else format.html { render :edit } format.json { render json: @user.errors, status: :unprocessable_entity } end end end # DELETE /users/1 # DELETE /users/1.json def destroy @user.destroy respond_to do |format| format.html { redirect_to users_url, notice: 'User was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_user @user = User.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def user_params params.require(:user).permit(:name, :email) end end

とかき、
routes.rbには

Rails.application.routes.draw do get 'session/index' devise_for :users resources :users resources :session, path: "login", only: [:index, :create] do collection do delete '/', to: "session#delete" end end end

users.ymlには

user_1: id: 1 name: "myname" email: "自分のアドレス" encrypted_password:

と書きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

補足

http://localhost:3000/rails/info/routes

こちらのURLを打つとルーティングが全て見れます。

投稿2017/01/11 01:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

スタックトレースに表示されるファイル名の行番号箇所を読むと良いです。

http://server:3000/hoge (←存在しないURLを指定する) とでも入力すればroutesが一覧表示されます。
エラー箇所の行のpath指定がroutesの一覧にないものを指定しているのだと思います。

投稿2017/01/09 14:59

編集2017/01/09 15:12
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問