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

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

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

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1834閲覧

jQuery appendで取得したjsonデータをビューに表示させる為、jsファイル内でHaml→HTMLの書き換えを行う際の問題

mako19

総合スコア6

Ruby on Rails 5

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/21 10:08

編集2020/06/21 10:15

前提・実現したいこと

コメント機能の非同期通信化を実装中
jQueryの、json形式で取ってきたデータをビューのhamlにappendしたい
jsファイルからappendする時に、jsファイル内でappendしたい箇所のHamlをHTMLに書き換えたい。

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

if文を書き変えている所がどうしてもうまく行かずに
そのままif文の文章がそのままビューに表示される

該当のソースコード

以下、買い替え箇所のjsファイルのコードと
ビューファイルのhamlコード

haml

1 2.PostInfo__yourComments-wrapper 3 = link_to (image_tag comment.user.image.url, class: "PostInfo__yourComments--image CommentUserShow-image"), user_path(comment.user) 4 = link_to user_path(comment.user), class: "PostInfo__yourComments--name CommentUserShow-name" do 5  = comment.user.name 6 .PostInfo__yourComments--contents 7  - if current_user.id == comment.user.id 8   %span.OwnComment 9    = comment.content 10  - else 11   %span 12    = comment.content

js

1 2function buildHTML(comment){ 3 let html = 4 `<div class="PostInfo__yourComments-wrapper"> 5 <a href="/users/${comment.user_id}"><img src="${comment.image}" class="PostInfo__yourComments--image CommentUserShow-image"></a> 6 <a class="PostInfo__yourComments--name CommentUserShow-name", href="/users/${comment.user_id}">${comment.user_name}</a> 7 <div class="PostInfo__yourComments--contents"> 8 if (current_user.id === ${comment.user_id}) { 9 <span class="OwnComment">${comment.content}</span> 10 } else { 11 <span>${comment.content}</span> 12 } 13 </div> 14 </div>` 15 return html 16 } 17 18

試したこと

if分の文章がそのまま表示されているということは、条件式の書き方の問題ではないと予想。
<%%>を前後に付けてみてもダメでした。

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

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

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

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

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

guest

回答1

0

文字列として連結すればよいのでは。

js

1 let html = 2 `<div class="PostInfo__yourComments-wrapper"> 3 <a href="/users/${comment.user_id}"><img src="${comment.image}" class="PostInfo__yourComments--image CommentUserShow-image"></a> 4 <a class="PostInfo__yourComments--name CommentUserShow-name", href="/users/${comment.user_id}">${comment.user_name}</a> 5 <div class="PostInfo__yourComments--contents">`; 6 if (current_user.id === ${comment.user_id}) { 7 html += `<span class="OwnComment">${comment.content}</span>`; 8 } else { 9 html += `<span>${comment.content}</span>`; 10 } 11 html += `</div> 12 </div>`;

投稿2020/06/21 10:23

kei344

総合スコア69407

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

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

mako19

2020/06/21 10:47 編集

if文の条件式の中の${comment.user_id}がおそらく原因?で(${}がここだけ色付けされていないので) ActionController::UnknownFormat in CommentsController#create のエラー文が表示されています。 そして${}取ったらもう一度実行してみると、処理が止まったのか、無限ループなのか、 何も動かない状態になっています。パソコンの音は聞こえないので無限ループではないかと思われます。
kei344

2020/06/21 11:48

if (current_user.id === comment.user_id) { こうですね、失礼しました。 「ActionController::UnknownFormat in CommentsController#create」はJavaScriptのエラーではないので、ちょっとわかりません。
mako19

2020/06/22 01:14

いえいえ、回答ありがとうございました! 自分でも少し模索してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問