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

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

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

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

Ruby on Rails

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

HTML

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

Q&A

解決済

1回答

1475閲覧

Rails slimでaタグに変更するとパーシャルを囲むことができない

JuniorSirius

総合スコア38

Ruby

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

Ruby on Rails

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

HTML

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

0グッド

0クリップ

投稿2021/11/01 12:23

編集2021/11/01 20:32

以下のインスタンスに紐づいたパーシャルの_diary.html.slimとしていて、コンパイルされるように構成されていますが

下に記載いたしましたインスタンスのコードにaタグで囲って扱えるように変更したいです。
そのためにやったこととして、単純にdivをaに置き換えるようにa.card.mb-5.diary.diary_center[href="#{diary_path(diary)}"]
または、= link_to(diary_path(diary), class: 'card mb-5 diary diary_center diary_link') doなどでslimのaタグ出力に変更してもいずれもaタグが外に出て710x0として空白の要素になってしまいます。
イメージ説明

元になるaタグで囲う前のインスタンスのパーシャル_diary.html.slimは以下の通りですが、どのようにしたらaタグ で扱えるようになるでしょうか??
修正ポイントがありましたらご教授いただけたら幸いです!

ruby

1.card.mb-5.diary.diary_center 2 .card-header.d-flex.justify-content-between.align-items-center 3 .diary__profile 4 = image_tag 'profile-placeholder.png', size: '40x40', class: 'rounded-circle mr-2' 5 = link_to diary.user.username, diary.user 6 - if current_user&.own?(diary) 7 .diary__user-links 8 = link_to diary_path(diary), class: 'mr-3', method: :delete, data: { confirm: '本当に削除しますか?' } do 9 = icon 'far', 'trash-alt', class: 'fa-lg' 10 = link_to edit_diary_path(diary) do 11 = icon 'far', 'edit', class: 'fa-lg' 12 .card-body 13 span.d-flex.justify-content-between 14 span.diary__date 15 = diary.date_sequence 16 |日目 17 span.diary__time-ago 18 = time_ago_in_words(diary.created_at) 19 p.diary__content 20 = diary.body 21 - if diary.check.present? 22 br 23 text.diary__check.diary__check-title 24 |〈チェック〉 25 text.diary__check 26 = diary.check 27 .diary__footer.pb-4.pr-4.d-flex.justify-content-end.align-items-center 28 a.diary__comment-icon href="#" 29 = icon 'far', 'comment', class: 'fa-lg fa-light' 30 span.diary__comment 131 - if diary.image.present? 32 = link_to diary.image.url, class: 'diary__image', "data-lightbox" => "image-#{diary.id}" do 33 = image_tag diary.image.url, height: '40', width: '40'

html

1<a href="diary/89" class="card mb-5 diary diary_center"><div class="card-header d-flex justify-content-between align-items-center"><div class="diary__profile"><img class="rounded-circle mr-2" src="/assets/profile-placeholder-646bf58e3695cd1e89bb55f531dfea783bf86e9eca61400792e15206bab8acaf.png" width="40" height="40"><a href="/users/1">foobar</a></div><div class="diary__user-links"><a class="mr-3" data-confirm="本当に削除しますか?" rel="nofollow" data-method="delete" href="/diaries/89"><i class="far fa-trash-alt fa-lg"></i></a><a href="/diaries/89/edit"><i class="far fa-edit fa-lg"></i></a></div></div><div class="card-body"><span class="d-flex justify-content-between"><span class="diary__date">14日目</span><span class="diary__time-ago">2日</span></span><p class="diary__content">今日は寒かったが畑作業に勤しむことができた。明日も頑張って畑を耕したい<br><text class="diary__check diary__check-title">〈チェック〉</text><text class="diary__check">寒かったのにも関わらず淡々と起床できたのは素晴らしい。</text></p></div><div class="diary__footer pb-4 pr-4 d-flex justify-content-end align-items-center"><a class="diary__comment-icon" href="#"><i class="far fa-comment fa-lg fa-light"></i><span class="diary__comment">1件</span></a></div></a>

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

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

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

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

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

guest

回答1

0

ベストアンサー

はて、、、
link_to自体が aタグをつくるものなので、その中にさらにa タグというのがよく分かりません。
そのlink_to の部分でどのようなhtmlにしたいのか、を記述してください。
日本語の説明ではなく、codeで。
あと、
画像で示している部分とその下のcodeとが対応していないようにみえます。
対応している部分のがわかるようにしてください

投稿2021/11/01 13:32

winterboum

総合スコア23347

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

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

JuniorSirius

2021/11/01 20:35 編集

ご回答ありがとうございます。 コードに対応する画像を差し替えさせていただきました。一番外側の`div`要素をaタグに変えてそこにリンクを付与したいイメージです。aタグの中にaタグは、一旦divを構成してその中にaタグを構成するやり方を[Qiita]( https://qiita.com/fukamiiiiinmin/items/7412b21c6df5de31cab1 )で見たので真似てみようかと。実現したいコードは以下のコードです。 お願いいたします。 ```html <a href="diary/89" class="card mb-5 diary diary_center"><div class="card-header d-flex justify-content-between align-items-center"><div class="diary__profile"><img class="rounded-circle mr-2" src="/assets/profile-placeholder-646bf58e3695cd1e89bb55f531dfea783bf86e9eca61400792e15206bab8acaf.png" width="40" height="40"><a href="/users/1">foobar</a></div><div class="diary__user-links"><a class="mr-3" data-confirm="本当に削除しますか?" rel="nofollow" data-method="delete" href="/diaries/89"><i class="far fa-trash-alt fa-lg"></i></a><a href="/diaries/89/edit"><i class="far fa-edit fa-lg"></i></a></div></div><div class="card-body"><span class="d-flex justify-content-between"><span class="diary__date">14日目</span><span class="diary__time-ago">2日</span></span><p class="diary__content">今日は寒かったが畑作業に勤しむことができた。明日も頑張って畑を耕したい<br><text class="diary__check diary__check-title">〈チェック〉</text><text class="diary__check">寒かったのにも関わらず淡々と起床できたのは素晴らしい。</text></p></div><div class="diary__footer pb-4 pr-4 d-flex justify-content-end align-items-center"><a class="diary__comment-icon" href="#"><i class="far fa-comment fa-lg fa-light"></i><span class="diary__comment">1件</span></a></div></a> ```
winterboum

2021/11/01 22:19

参照には 内側の<a></a> は<object>で囲む とありますね
JuniorSirius

2021/11/01 23:15 編集

どうやら`link_to`や`a`要素が直接的に階層に含まれた状態で、親側でaタグがあると衝突してバグるので、objectを子要素に割り当てたらうまくいきました。 いきなり全て、加工しようとして混乱したので、まずはa要素を全て省いて親の階層に`= link_to(diary_path(diary), class: 'card mb-5 diary diary_center diary__link') do `として適宜、子要素のa要素にobjectを中間に位置するの親として割り当てたら表示もバグらずうまくいきました。 パニクってやるべきことが、見えなくなるのはいけませんね。 おさわがせしました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問