61603


ログイン後、タスクリスト一覧に飛ぶ方法がわからないです。

**app/view/tasks/index**

[code]

    <h1>タスクリスト一覧</h1>
    <ul>
      <% @tasks.each do |task| %>
        <li><%= link_to task.id, task %> : <%= task.status %> &gt; <li><%= task.content %></li>
      <% end %>
    </ul>
    
    <%= link_to '新規タスクの投稿', new_task_path %>
    
[/code]

**config/rootes**

[code]

    Rails.application.routes.draw do
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
      root to: 'tasks#index'
    
      get 'login', to: 'sessions#new'
      post 'login', to: 'sessions#create'
      delete 'logout', to: 'sessions#destroy'
    
      resources :tasks
      get 'login', to:'tasks#index'
      resources :users, only: [:index, :show, :new, :create]
    end
    
[/code]

**app/controllers/sessions_controllers**

[code]

    class SessionsController < ApplicationController
      def new
      end
    
      def create
        email = params[:session][:email].downcase
        password = params[:session][:password]
        if login(email, password)
          flash[:success] = 'ログインに成功しました。'
          redirect_to @user
        else
          flash.now[:danger] = 'ログインに失敗しました。'
          render 'new'
        end
      end
    
      def destroy
        session[:user_id] = nil
        flash[:success] = 'ログアウトしました。'
        redirect_to root_url
      end
    
      private
    
      def login(email, password)
        @user = User.find_by(email: email)
        if @user && @user.authenticate(password)
          # ログイン成功
          session[:user_id] = @user.id
          return true
        else
          # ログイン失敗
          return false
        end
      end
    end
    
[/code]

**app/views/sessions/new**

[code]

    <div class="text-center">
      <h1>Log in</h1>
    </div>
    
    <div class="row">
      <div class="col-sm-6 offset-sm-3">
    
        <%= form_with(url: login_path, scope: :session, local: true) do |f| %>
    
          <div class="form-group">
            <%= f.label :email, 'Email' %>
            <%= f.email_field :email, class: 'form-control' %>
          </div>
    
          <div class="form-group">
            <%= f.label :password, 'Password' %>
            <%= f.password_field :password, class: 'form-control' %>
          </div>
    
          <%=  f.submit 'Log in', class: 'btn btn-primary btn-block' %>
        <% end %>
    
      </div>
    </div>
    
[/code]


CC BY-SA 4.0
2019-12-19T13:22:03.183
61592
2019-12-20T12:12:26.907
2019-12-20T12:12:26.907
32986
36466
question
ruby-on-rails
ログイン後、rootのルーティングへ遷移し、ユーザーが登録したタスクを一覧表示する方法


config/routes.rbの`get 'login', to:'tasks#index'`の行は不要です。  
app/controllers/sessions_controllers.rbの`redirect_to @user`は`redirect_to
root_url`とすると良いと思います。


CC BY-SA 4.0
2019-12-20T01:40:06.743
61603
2019-12-20T01:40:06.743
28970
61592
answer