2017-06-25 14 views
0

私はこのコードをレールとスリムのルビーで書いています。下のコードでは、私が持っているすべてのレッスンをループして表示しようとしています。また、各レッスンには、質問入力とその質問に関連するlesson_idを取るポップアップボックス(ブートストラップモーダル)を生成し、データベースに保存する質問ボタンがあります。このコードの問題は、各質問ボタンが最初のレッスンのlesson_idだけを取ることです。どんなレッスンの質問をクリックしても、常に最初のレッスンのレッスンIDを受け取ります。さて、ここで問題となっているのは、ブートストラップモーダルはjavascriptなので、コンテンツ全体がロードされた後に読み込まれるので、このエラーが発生します。しかし、私はどのようにこれを解決するか分からない。この問題で私を助けてください。ありがとうございました。ブートストラップモーダルが正しいIDを動的に取得しない

`-lessons.each do |lesson| 
    span.pull-right 
    a[data-open="exampleModal2"] 
     i.fa.fa-question[aria-hidden="true"] 
    #exampleModal2.reveal[data-reveal] 
     h1 
     center 
      | Ask question 
     = simple_form_for Question.new, url: lesson_questions_path(lesson.id), method: :post do |f| 
      = lesson.name 
      = f.input :title, label: "Question" 
      = f.input :content, label: "Question Description" 
      = f.button :submit 
      button.close-button aria-label=("Close modal") data-close="" type="button" 
      span aria-hidden="true" ×` 

答えて

0

あなたの問題は、壊れたブートストラップモーダルと無効なHTMLでこれと同じIDを共有し、複数の要素であなたを残し各繰り返しの後に変更されていないid属性です。

あなたはこれを変更する必要があります

#exampleModal2.reveal[data-reveal] 

をこのようなもので:

.reveal[data-reveal id=lesson.id] 

は相応a[data-open="exampleModal2"]を更新することを忘れないでください。私はブートストラップがモーダルをどのように開くのか覚えていませんが、それがdata-open属性を介しているなら、これはそれでなければなりません。

+0

これは 'ActionView :: Template :: Error(複数のid属性が指定されています): 'というエラーを表示し、ページに何も表示されません。ちょうど何かが間違っていると言う – CCR

+0

それはあなたが私の答えに書かれたものの代わりに、このような何かをしたことを意味します。#exampleModal2.reveal [data-reveal id = lesson.id]エラーを読んで、コードを読んでください。それはすべてそこにある、あなたは注意を払う必要がある – mizurnix

関連する問題