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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

1回答

868閲覧

[Ruby on Rails]環境によってviewの表示を変えたいです

yomigi

総合スコア43

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/08/02 06:38

編集2019/08/02 08:43

前提・実現したいこと

開発環境と本番環境があるとして、
開発環境でのみ表示するリンク
を実装したいと考えています。

こちらをどう実装するのがベターなのかについて、ご意見を伺いたいです。
viewファイルに以下のように書く以外に、何か方法があるでしょうか。

ruby

1- if Rails.env.development? 2 = link_to "リンク", xxx_path

こちらの懸念事項としては、ただ単にview側での動線を絶っているいるだけなので、
直接パスを指定する形をとると、遷移先に移動できてしまう
(上記例だとxxx_pathに移動できてしまう)
というものがあります・・・。

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

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

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

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

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

gouf

2019/08/07 17:52

興味深い問題と感じ わたしも知りたいと思いました。 View (ないし Helper メソッドとして) での環境による表示の振り分けに加えて、「config/routes.rb」にてルート定義の振り分けってできませんか? さらに一歩進めて: 別ファイルに分けてしまって、開発環境のときだけ読み込む... といったことは...?
guest

回答1

0

方法を3つ書け とかいうテストでしたらひねり出しますが、
その方法はすっきりしていてとても良いと思うのですが、なにか気になるところがありますか?

投稿2019/08/02 07:50

winterboum

総合スコア23329

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

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

yomigi

2019/08/02 08:41

ありがとうございます! はい、懸念点としては、直接パスを指定するような形でAPIを叩いてしまうと、 それが通ってしまう(上記例だとxxx_pathの遷移先に飛べてしまう)と言うものがあります。 view側で動線を無くしているだけなので、その他(ルーテング、コントローラなど)は無防備なんです・・・。
winterboum

2019/08/02 08:44

controller、roots.rb にも if Rails.env.development? を入れるのは美しくない、 というか 漏れが怖いということですね。 考えてみます
winterboum

2019/08/02 08:46

まだ舌は濡れてますが、、、、 その懸念が問題となるとすると、viewにlinkを書くか書かないか以前に、controllerで防備する必要がありますね。
yomigi

2019/08/02 10:07

ありがとうございます、コントローラ側にbefore_actionで弾くように定義するようにしました。 ただ、これだとwinterboum様がおっしゃられているように漏れが怖いです。 view, controllerの双方で弾く処理を書いているので、表示と実装の齟齬が発生してしまいそうです。 どうにか統一して(まとめて一箇所に)弾く処理を定義する方法がないものでしょうか・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問