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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

Q&A

解決済

2回答

2321閲覧

railsの条件分岐について

WalterMontes

総合スコア25

Ruby

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

0グッド

0クリップ

投稿2017/10/25 01:49

下記のようにログイン中のユーザーがいるかどうかで条件分岐をしましたが、ログインユーザーがいない状態でrootとaboutページに行くとそこからUsers,Create User,Loginにアクセスすることができません。
原因が分かる方、よろしくお願いいたします。(2枚目の画像はAboutページで、ここからヘッダーのリンクにアクセスすることができず、URLを直接打たないと他のページにアクセスできない状態です。)

<% if @current_user %> <!-- session[:user_id]--> <ol> <%= link_to(@current_user.name, "/users/#{@current_user.id}") %> </ol> <ol> <%= link_to "Index", posts_path %> </ol> <ol> <%= link_to "POST", new_post_path %> </ol> <ol> <%= link_to "Logout", logout_path, {method: :post} %> </ol> <% else %> <ol> <%= link_to "About this app", about_path %> </ol> <ol> <%= link_to "Users", users_path %> </ol> <ol> <%= link_to "Create User", new_user_path %> </ol> <ol> <%= link_to "Login" , login_path %> </ol> <% end %> <!--・ログイン状態で表示する項目(・session[:user_id],・投稿一覧、・新規投稿、ログアウト)      ・ログアウト状態で表示する項目(・about app,・ログイン)--> </ul> コード

![イメージ説明
イメージ説明

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

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

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

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

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

guest

回答2

0

自己解決

HTMLのClass名をhomeとaboutページだけ異なる名前にしていました。
HTML,CSSを綺麗に書けるように頑張ります。

投稿2017/10/30 05:29

WalterMontes

総合スコア25

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

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

0

pathが間違っているということはないでしょうか。
Loginを押した時に流れるログを貼り付けてもらってもよろしいですか?

条件分岐に関しては問題ないと思いますよ。

投稿2017/10/25 02:07

編集2017/10/25 02:09
glvty83

総合スコア135

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

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

WalterMontes

2017/10/25 02:23

ご回答いただきありがとうございます。 Loginを押した時に流れるログというのはこちらであっていますか? Started GET "/login" for 127.0.0.1 at 2017-10-25 11:20:23 +0900 Processing by UsersController#login_form as HTML User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] Rendering users/login_form.html.erb within layouts/application Rendered users/login_form.html.erb within layouts/application (2.4ms) Completed 200 OK in 66ms (Views: 58.3ms | ActiveRecord: 1.1ms) Aboutとrootページ以外ではちゃんと条件分岐されます。
glvty83

2017/10/25 02:57 編集

ありがとうございます。 ログを見た感じだと、Rendered users/login_form.html.erbとなっているので、リンクは機能してると思われます。 users_controllerのlogin_formメソッドの中身と users/login_form.html.erbも貼ってもらってもよろしいですか。
WalterMontes

2017/10/25 03:29

login_formアクションは空で、login時に以下の処理をしています。 def login_form end def login @user = User.find_by(email: params[:email], password: params[:password]) if @user session[:user_id] = @user.id flash[:notice] = "you are logged in" redirect_to posts_path else @error_message = "email address or password you entered are wrong" @email = params[:email] @password = params[:password] render("users/login_form") end end 以下がusers/login_form.html.erbです。 <div class="container"> <div class="form-heading">Login Form</div> <div class="form users-form"> <% if @error_message %> <div class="form-error"> <%= @error_message %> </div> <% end %> <%= form_tag("/login") do %> <div class="form-body"> <p>email address</p> <input name="email" value="<%= @email%>"> <p>password</p> <input type="password" name="password" value="<%= @password%>"> <input type="submit" value="login"> </div> <% end %> </div> </div> よろしくお願いいたします。
glvty83

2017/10/25 05:37

すみませんがいまいち原因がわからないので.... URL直打ちだと他のページに遷移できるとのことだったので以下のようにして見てはどうでしょうか。 <% if @current_user %> <!-- session[:user_id]--> <ol> <%= link_to(@current_user.name, "/users/#{@current_user.id}") %> </ol> <ol> <%= link_to "Index", posts_path %> </ol> <ol> <%= link_to "POST", new_post_path %> </ol> <ol> <%= link_to "Logout", logout_path, {method: :post} %> </ol> <% else %> <ol> <a href="/about">About this app</a> </ol> <ol> <a href="/users">Users</a> </ol> <ol> <a href="/users/new">Create User</a> </ol> <ol> <a href="/login">Login</a> </ol> <% end %>
WalterMontes

2017/10/30 05:26

すみませんHTMLのClass名をhomeとaboutページだけ違う名前にしていて、CSSが反映されていませんでした・・・ class名を統一したらちゃんとアクセス出来るようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問