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

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

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

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

Ruby

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

HTML5

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

3回答

379閲覧

if分の条件分岐について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

HTML5

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2018/11/11 02:14

編集2018/11/11 04:25

ruby2.5.1 rails5

タブ内にページタイトルをつけています。
仕様では ”page_title”|サイト名 ですが、特定のページのみサイト名を表示しないようにするにはどうしたら良いでしょうか?

application_helper.rb

module ApplicationHelper def full_title(page_title) base_title = "サイト名" if page_title.empty? base_title = "キャッチコピー" else "#{page_title} | #{base_title}" end end end

今今ではサイトのトップページには**”キャッチコピー”のみを表示することができていますが、もう1ページにサイト名を入れずに”サイトについて”**というタイトルのみのページタイトルを作りたいと思っています。

if文について知識が浅く、サイトで調べて実践してみましたが、どうもうまくいかずに困っています。

回答を参考に追記

回答ありがとうございます。
「特定のページ」という文言が自分視点のわかりずらい言葉になっていましたので追記いたします。

上記にあります、application_helper.rb内のヘルパーにより、

user.html.erb

<% provide(:title,"ユーザーページ") %>

と書けば、タイトルは ユーザーページ|サイト名 になります。

しかし、全てのページに ”page_title”|サイト名 を反映させたくはなく、page_titleもしくはbase_titleのみを表示したいページが2箇所あります。

その2箇所が=”特定のページ”になります。

1つ目が「キャッチコピー」をタイトルに追加したいページ
2つ目が「サイトについて」をタイトルに追加したいページ

現在 以下のソースコードで、「キャッチコピー」は表示できています。

<title><%= full_title(yield(:title)) %></title>

あとは「サイトについて」のみを表示するif文を作れたらなと思っています。

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

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

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

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

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

guest

回答3

0

ベストアンサー

特定の条件という条件はどんなものかわかりませんが恐らくあるcontroller内ということでしょうか

controller.controller_nameでcontroller名が取得できるので

def full_title(page_title) base_title = "サイト名" if controller.name == "表示させたくないcontroller名" "" elsif page_title.empty? base_title = "キャッチコピー" else "#{page_title} | #{base_title}" end end

controller全体で共通ということにはしたくなく、あるアクションにおいてというときはcontroller.action_nameでaction名が取得できますね

投稿2018/11/11 02:58

akiya3

総合スコア19

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

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

退会済みユーザー

退会済みユーザー

2018/11/11 04:05

回答ありがとうございます。 "特定の"という言葉の説明が足りづすいません。 akiyaさんのおっしゃる通り、home_controller.rbのindexでは、”サイトについて”というページタイトルをつけたいと思っています。 それを踏まえて書き換えてみましたが、どうもうまくいきません。 def full_title(page_title) base_title = "サイト名" ※if controller.name == "controller.controller_home"※ "サイトについて" elsif page_title.empty? base_title = "キャッチコピー" else "#{page_title} | #{base_title}" end end ※の中を一通り色んなパターンを試してみました、間違っているでしょうか?
akiya3

2018/11/11 04:55

すみません、提示した私の書き方が間違っていました `controller.name`ではなく`controller.controller_name`ですね これを踏まえると ``` if controller.controller_name == "homes" && controller.action_name == "index" "このサイトについて" 以下略 ``` の条件で動くはずです [ドキュメントはこちらになりますので](http://railsdoc.com/references/controller_name)一読されてみてください
退会済みユーザー

退会済みユーザー

2018/11/11 05:23

homesをhomeに変えてうまく動作しました! if controller.controller_name == "home" && controller.action_name == "index" 最後まで丁寧に対応してくださり、ありがとうございました!
guest

0

特定のページの page_title が仮に dum_page だったとするならば

ruby

1if page_title.empty? 2 base_title = "キャッチコピー" 3elsif page_title == "dum_page" 4 # dum_page のみでやりたい処理を記載 5 # 例えば 6 "#{page_title} | サイトについて" 7 # など 8else 9 "#{page_title} | #{base_title}" 10end

ご質問の意図と違っていたら申し訳ありません。

良かったら参考にしてみてください。

投稿2018/11/11 02:55

shaw

総合スコア209

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

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

0

Rubyやっていないのでめちゃくちゃなことを書きますね。

特定のページのみサイト名を表示しないようにする

とありますが、これの基準はなんでしょうか?

投稿2018/11/11 02:43

BeatStar

総合スコア4958

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問