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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

212閲覧

jQueryを使用して値がnilでもエラーじゃなく空白で表示させたい

kpg

総合スコア23

Ruby on Rails 5

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/06/28 10:32

railsで商品の詳細を表示させるページにて、ブランドの項目がnilだと、

NoMethodErrorが表示されてしまいます。

これをブランドがnilでも空白で表示させれるようにしたいです。

jQueryの条件文でnilの場合にテキストを表示させれるような記述をしているつもりなのですが、表示できません。

コードは下記です。

haml

1.table__tr__td-brand-following 2 .table__tr__td-brand-following__right 3  %p 4   = @item.brand.name

上記の「= @item.brand.name」がデータベースがnilの場合でも空白で表示させたいです。

下記がjQueryのコードです。

jQuery

1 $(function(){ 2 var elem = $('.table__tr__td-brand-following__right') 3 if(elem.children('p').length == 0){ 4 elem.children('p').html(" ") 5 } 6 });

以上です。

初歩的な質問で大変恐縮ですが、どなたかご教示の程よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

jQueryの条件文でnilの場合にテキストを表示させれるような記述をしているつもりなのですが、表示できません。

そりゃそうです。@item.brand.nameはRailsで処理するので、JavaScriptの処理が行われる前にエラーとなってしまいます。Rails側での対応が必要です。

とりあえず、nilを無視させる@item.brand&.nameとしておけば、``@item.brandnilでも全体がnil`になるだけで、エラーは発生しません。

投稿2019/06/28 10:59

maisumakun

総合スコア145184

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

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

kpg

2019/06/28 11:12

maisumakun 様 ご返信ありがとうございます! ご指摘の内容で修正したところ、正常に表示されました!ありがとうございます! ぼっち演算子というのですね。 大変助かりました。 ありがとうございました。
guest

0

矛盾していませんか?

elem.children('p').length == 0

elemが子供にpをもっていなければという条件に対して

elem.children('p').html(" ")

elemの子供のpのhtmlをスペースにするという指示。
いやだからそんな要素ないって・・・話

まぁやるとしても

javascript

1elem.append($('<p> </p>'));

とかじゃないですか?

投稿2019/06/28 10:44

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問