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

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

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

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

3696閲覧

rails トップページから移動できない リンクが切れてしまう

railsganbaruman

総合スコア16

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/14 16:11

編集2020/05/15 00:44

前提・実現したいこと

ログイン機能(devise)を持った本のレビューサイトを作っています。

投稿データモデル Book
ログインデータモデル User

発生している問題・エラーメッセージ

トップページに指定している welcome.html.erb 内のリンクlog in,sign upをクリックしてもlog inページ、sign upページに移動しません。

クリックすると一瞬移動したいurlが表示されるもurlがトップページに切り替わります。

エラーメッセージ  なし

該当のソースコード

routes.rb

Rails.application.routes.draw do root 'books#welcome' devise_for :users resources :books # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end

welcome.html.erb

<h1>welcome to Bookers !!</h1> <p>In Bookers,<br> you can share and exchange your opinions , inpressions , and emotions<br> about various books!</p> <%= link_to "Log in", user_session_path %> <%= link_to "Sign up", new_user_registration_path %>

new.html.erb (Sign up用、views/users/registration/new.html.erb)

<h2>Sign up</h2> <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= render "devise/shared/error_messages", resource: resource %> <div class="field"> <%= f.label :email %><br /> <%= f.email_field :email, autofocus: true, autocomplete: "email" %> </div> <div class="field"> <%= f.label :password %> <% if @minimum_password_length %> <em>(<%= @minimum_password_length %> characters minimum)</em> <% end %><br /> <%= f.password_field :password, autocomplete: "new-password" %> </div> <div class="field"> <%= f.label :password_confirmation %><br /> <%= f.password_field :password_confirmation, autocomplete: "new-password" %> </div> <div class="actions"> <%= f.submit "Sign up" %> </div> <% end %> <%= render "users/shared/links" %>

new.html.erb ((Log in用、views/users/sessions/new.html.erb)

<h2>Log in</h2> <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> <div class="field"> <%= f.label :email %><br /> <%= f.email_field :email, autofocus: true, autocomplete: "email" %> </div> <div class="field"> <%= f.label :password %><br /> <%= f.password_field :password, autocomplete: "current-password" %> </div> <% if devise_mapping.rememberable? %> <div class="field"> <%= f.check_box :remember_me %> <%= f.label :remember_me %> </div> <% end %> <div class="actions"> <%= f.submit "Log in" %> </div> <% end %> <%= render "users/shared/links" %>

試したこと

welcome.html.erb内のリンク先を試験的にbooks_pathと指定してやるとindex.html.erbが表示されました。

上記にも述べた通り、クリックすると移動したいurlに移動できています。
new.html.erbが不適切なのでしょうか。

補足情報(FW/ツールのバージョンなど)

rails routes の出力抜粋

root GET / books#welcome new_user_session GET /users/sign_in(.:format)      devise/sessions#new user_session POST /users/sign_in(.:format)   devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format)    devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format)   devise/passwords#edit user_password PATCH /users/password(.:format)  devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel new_user_registration GET /users/sign_up(.:format)   devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit user_registration PATCH /users(.:format) devise/registrations#update PUT /users(.:format)    devise/registrations#update DELETE /users(.:format)    devise/registrations#destroy POST /users(.:format)   devise/registrations#create books GET /books(.:format) books#index POST /books(.:format) books#create new_book GET /books/new(.:format) books#new edit_book GET /books/:id/edit(.:format) books#edit book GET /books/:id(.:format) books#show PATCH /books/:id(.:format) books#update PUT /books/:id(.:format) books#update DELETE /books/:id(.:format) books#destroy

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

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

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

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

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

guest

回答1

0

ベストアンサー

クリックすると一瞬移動したいurlが表示されるもurlがトップページに切り替わります。

ということなので、「ログインしていなかったらTOPページへリダイレクトする」みたいな記述がコントローラーなどに記載されているとかはありませんか?

deviseのnew.html.erbは初期値の状態から触ってなければ多分おかしくはないと思います。

あと、Welcome.html.erbの

ruby

1<%= link_to "Log in", user_session_path %>

とありますが、Log inの場合はnew_user_session_pathだと思います。

投稿2020/05/15 13:59

gnfreeworks

総合スコア306

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

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

railsganbaruman

2020/05/16 05:47

ありがとうございます。new_user_session_pathで解決しました。もっと勉強します。
railsganbaruman

2020/05/16 06:13

ログイン状態でログイン、サインアップしようとしていたことも関係していそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問