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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

4370閲覧

Rails「新規投稿」や「ログイン」画面に遷移できない

_tonton_

総合スコア4

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/02 08:01

編集2020/08/02 08:33

前提・実現したいこと

link_toを使い、新規登録画面やログイン画面に遷移したいのですが
うまくいきません。
どなたか知恵をお貸しいただけませんでしょうか?

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

エラー画面

パラメーターのidがパスを受け取っているようなのですが、
これが原因でしょうか?

該当のソースコード

  • users_controller.rb

ruby

1class UsersController < ApplicationController 2 def new 3 @users = User.all 4 end 5 6 def show 7 @user = User.find(params[:id]) 8 end 9 10 def create 11 @user = User.new(user_params) 12 if @user.save 13 redirect_to "/", notice: "#ようこそ{@user.name}さん!" 14 else 15 render :new 16 end 17 end 18 19 private 20 21 def user_params 22 params.require(:user).permit(:nickname, :email, :password, :password_confirmation) 23 end 24end
  • application.html.haml

haml

1.user-management 2 - if user_signed_in? 3 = link_to "ログアウト", "destroy_user_session_path", class: "logout", method: :delete 4 - else 5 = link_to "ログイン", "new_user_session_path", class: "post" 6 = link_to "新規登録", "new_user_registration_path", class: "post"
  • routes.rb

ruby

1Rails.application.routes.draw do 2 devise_for :users 3 root "posts#index" 4 resources :posts 5 resources :users, only:[:new, :show, :create] 6end

追記

  • views/devise/registrations/new.html.haml

ruby

1.contents-row 2 .container 3 %h2 4 Sign up! 5 = form_with model: @user, url: user_registration_path, id: 'new_user', class: 'new_user', local: true do |f| 6 = devise_error_messages! 7 8 .field 9 = f.label :name 10 %i (6文字以内) 11 .field__name 12 = f.text_field :name, autofocus: true, maxlength: "6" 13 14 .field 15 = f.label :email 16 .field__address 17 = f.email_field :email 18 19 .field 20 = f.label :password 21 %i (6文字以上) 22 .field__pass 23 = f.password_field :password, autocomplete: "off" 24 25 .field 26 = f.label :password_confirmation 27 .field__pass-confirmation 28 = f.password_field :password_confirmation, autocomplete: "off" 29 30 .actions 31 = f.submit "Sign up" , class: 'sign-btn'

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

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

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

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

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

guest

回答2

0

自己解決

こちらで自己解決しました!
ありがとうございました!

  • application.html.haml

ruby

1.user-management 2 - if user_signed_in? 3 = link_to "ログアウト", "/users/sign_out", class: "logout", method: :delete 4 - else 5 = link_to "ログイン", "/users/sign_in", class: "post" 6 = link_to "新規登録", "/users/sign_up", class: "post"
  • routes.rb

ruby

1Rails.application.routes.draw do 2 devise_for :users 3 devise_for :users do 4 delete "/users/sign_out" => "devise/sessions#destroy" 5 get "/users/sign_in" => "devise/sesions#new" 6 get "/users/sign_up" => "devise/registrations#new" 7 end 8 root "posts#index" 9 resources :posts 10 resources :users, only: [:new, :show, :create] 11end

投稿2020/08/02 16:29

_tonton_

総合スコア4

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

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

0

show を呼ぶ view に問題がありそうです。
その view を載せてください

投稿2020/08/02 08:27

winterboum

総合スコア23401

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

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

_tonton_

2020/08/02 08:45 編集

ご回答ありがとうございます。 haml追記致しました。 devise/registrationsとdevise/sessionsに追記した通りのほぼ同じファイルが存在しています。
winterboum

2020/08/02 08:51

登録から来て、ですか。registration_controller は触りましたか? もし触っていたらそのcode載せてください。
_tonton_

2020/08/02 08:56

registration_controllerのファイル自体存在していません。 作成が必要でしょうか? ちなみにapplication.html.hamlにlink_toを記述しているため、 どのページへ遷移しても「新規登録」「ログイン」ボタンが表示されていますが、 クリックすると上記のエラーが出ます。 質問の意図と違った回答でしたら、申し訳ありません。
winterboum

2020/08/02 09:17

registration_controllerのファイルがないとすると、Deviseのオリジナルのまま使われているということになります。 それだとそういうparmsになるかなぁ、、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問