Im en utilisant un link_to_function/insert_html pour insérer un partial dans la page. Tout fonctionne bien, jusqu'à ce que j'ajoute un autre link_to_function/insert_html dans le partiel qui est rendu dans la page. Tout d'un coup le lien link_to_function externe cesse de fonctionner et jette cette erreur:Les fonctions imbriquées link_to_function/insert_html provoquent des erreurs javascript
"missing } after property list" [Break on this error] t.insert("content_items_1", { bottom: " ...[][position]\" type=\"hidden\" value="
Je pense que le fait que le bloc de html/js est à double rendu dans le lien cité est à l'origine des problèmes. Cela semble être un bug avec les rails, mais cela semble aussi une chose assez commune. Est-ce que je manque quelque chose? Un travail facile autour?
code: Page principale
<ol id="chapters">
<%= render :partial => 'chapter', :collection => @course.chapters %>
</ol>
<%= link_to_function("Add Chapter") do |page|
page.insert_html :bottom, :chapters, :partial => 'chapter', :object => Chapter.new
end %>
code: partiel 'chapitre'
<ol id="content_items_<%= @content_item_iter.to_s %>">
</ol>
<%= link_to_function "Add Content Item" do |page2|
page2.insert_html :bottom, "content_items_#{@content_item_iter.to_s}", :partial => 'content_item', :object => ContentItem.new
end %>
Voici le lien qui ne fonctionne pas (le lien Ajouter un chapitre) - \ n \ n \\ n remplacé par une nouvelle ligne:
<a href="#" onclick="try {
Element.insert("chapters", { bottom: "
<li>
<input id=\"course_chapter_attributes_1_position\" name=\"course[chapter_attributes][1][position]\" type=\"hidden\" value=\"0\" />
<h2>
<label for=\"course_chapter_attributes_1_name\">Chapter:</label>
<input id=\"course_chapter_attributes_1_name\" name=\"course[chapter_attributes][1][name]\" size=\"30\" type=\"text\" />
</h2>
<ol id=\"content_items_1\">
</ol>
<a href=\"#\" onclick=\"try {
Element.insert("content_items_1", { bottom: "
<li>
<input id=\\"course_chapter_attributes__content_item_attributes__position\\" name=\\"course[chapter_attributes][][content_item_attributes][][position]\\" type=\\"hidden\\" value=\\"1\\" />
<h3>
<label for=\\"course_chapter_attributes__content_item_attributes__description\\">Article:</label>
<input id=\\"course_chapter_attributes__content_item_attributes__description\\" name=\\"course[chapter_attributes][][content_item_attributes][][description]\\" size=\\"30\\" type=\\"text\\" /> <br />
</h3>
<label for=\\"course_chapter_attributes__content_item_attributes__url\\">Link URL:</label>
<input id=\\"course_chapter_attributes__content_item_attributes__url\\" name=\\"course[chapter_attributes][][content_item_attributes][][url]\\" size=\\"30\\" type=\\"text\\" /> <br />
<label for=\\"course_chapter_attributes__content_item_attributes__youtube_id\\">Youtube Video ID:</label>
<input id=\\"course_chapter_attributes__content_item_attributes__youtube_id\\" name=\\"course[chapter_attributes][][content_item_attributes][][youtube_id]\\" size=\\"30\\" type=\\"text\\" /> <br />
<label for=\\"course_chapter_attributes__content_item_attributes__start_time\\">Start/Stop Time:</label>
<input id=\\"course_chapter_attributes__content_item_attributes__start_time\\" name=\\"course[chapter_attributes][][content_item_attributes][][start_time]\\" size=\\"30\\" type=\\"text\\" /> <input id=\\"course_chapter_attributes__content_item_attributes__end_time\\" name=\\"course[chapter_attributes][][content_item_attributes][][end_time]\\" size=\\"30\\" type=\\"text\\" />
</li>
" });
} catch (e) { alert('RJS error: ' + e.toString()); alert('Element.insert(\\"content_items_1\\", { bottom: \\"
<li>
<input id=\\\\\\"course_chapter_attributes__content_item_attributes__position\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][position]\\\\\\" type=\\\\\\"hidden\\\\\\" value=\\\\\\"1\\\\\\" />
<h3>
<label for=\\\\\\"course_chapter_attributes__content_item_attributes__description\\\\\\">Article:</label>
<input id=\\\\\\"course_chapter_attributes__content_item_attributes__description\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][description]\\\\\\" size=\\\\\\"30\\\\\\" type=\\\\\\"text\\\\\\" /> <br />
</h3>
<label for=\\\\\\"course_chapter_attributes__content_item_attributes__url\\\\\\">Link URL:</label>
<input id=\\\\\\"course_chapter_attributes__content_item_attributes__url\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][url]\\\\\\" size=\\\\\\"30\\\\\\" type=\\\\\\"text\\\\\\" /> <br />
<label for=\\\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\\\">Youtube Video ID:</label>
<input id=\\\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][youtube_id]\\\\\\" size=\\\\\\"30\\\\\\" type=\\\\\\"text\\\\\\" /> <br />
<label for=\\\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\\\">Start/Stop Time:</label>
<input id=\\\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][start_time]\\\\\\" size=\\\\\\"30\\\\\\" type=\\\\\\"text\\\\\\" /> <input id=\\\\\\"course_chapter_attributes__content_item_attributes__end_time\\\\\\" name=\\\\\\"course[chapter_attributes][][content_item_attributes][][end_time]\\\\\\" size=\\\\\\"30\\\\\\" type=\\\\\\"text\\\\\\" />
</li>
\\" });'); throw e }; return false;\">Add Content Item</a>
</li>
" });
} catch (e) { alert('RJS error:
' + e.toString()); alert('Element.insert(\"chapters\", { bottom: \"
<li>
<input id=\\\"course_chapter_attributes_1_position\\\" name=\\\"course[chapter_attributes][1][position]\\\" type=\\\"hidden\\\" value=\\\"0\\\" />
<h2>
<label for=\\\"course_chapter_attributes_1_name\\\">Chapter:</label>
<input id=\\\"course_chapter_attributes_1_name\\\" name=\\\"course[chapter_attributes][1][name]\\\" size=\\\"30\\\" type=\\\"text\\\" />
</h2>
<ol id=\\\"content_items_1\\\">
</ol>
<a href=\\\"#\\\" onclick=\\\"try {
Element.insert("content_items_1", { bottom: "
<li>
<input id=\\\\"course_chapter_attributes__content_item_attributes__position\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][position]\\\\" type=\\\\"hidden\\\\" value=\\\\"1\\\\" />
<h3>
<label for=\\\\"course_chapter_attributes__content_item_attributes__description\\\\">Article:</label>
<input id=\\\\"course_chapter_attributes__content_item_attributes__description\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][description]\\\\" size=\\\\"30\\\\" type=\\\\"text\\\\" /> <br />
</h3>
<label for=\\\\"course_chapter_attributes__content_item_attributes__url\\\\">Link URL:</label>
<input id=\\\\"course_chapter_attributes__content_item_attributes__url\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][url]\\\\" size=\\\\"30\\\\" type=\\\\"text\\\\" /> <br />
<label for=\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\">Youtube Video ID:</label>
<input id=\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][youtube_id]\\\\" size=\\\\"30\\\\" type=\\\\"text\\\\" /> <br />
<label for=\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\">Start/Stop Time:</label>
<input id=\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][start_time]\\\\" size=\\\\"30\\\\" type=\\\\"text\\\\" /> <input id=\\\\"course_chapter_attributes__content_item_attributes__end_time\\\\" name=\\\\"course[chapter_attributes][][content_item_attributes][][end_time]\\\\" size=\\\\"30\\\\" type=\\\\"text\\\\" />
</li>
" });
} catch (e) { alert(\'RJS error:
\' + e.toString()); alert(\'Element.insert(\\\\"content_items_1\\\\", { bottom: \\\\"
<li>
<input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__position\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][position]\\\\\\\\\\\\" type=\\\\\\\\\\\\"hidden\\\\\\\\\\\\" value=\\\\\\\\\\\\"1\\\\\\\\\\\\" />
<h3>
<label for=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__description\\\\\\\\\\\\">Article:</label>
<input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__description\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][description]\\\\\\\\\\\\" size=\\\\\\\\\\\\"30\\\\\\\\\\\\" type=\\\\\\\\\\\\"text\\\\\\\\\\\\" /> <br />
</h3>
<label for=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__url\\\\\\\\\\\\">Link URL:</label>
<input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__url\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][url]\\\\\\\\\\\\" size=\\\\\\\\\\\\"30\\\\\\\\\\\\" type=\\\\\\\\\\\\"text\\\\\\\\\\\\" /> <br />
<label for=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\\\\\\\\\">Youtube Video ID:</label>
<input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__youtube_id\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][youtube_id]\\\\\\\\\\\\" size=\\\\\\\\\\\\"30\\\\\\\\\\\\" type=\\\\\\\\\\\\"text\\\\\\\\\\\\" /> <br />
<label for=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\\\\\\\\\">Start/Stop Time:</label>
<input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__start_time\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][start_time]\\\\\\\\\\\\" size=\\\\\\\\\\\\"30\\\\\\\\\\\\" type=\\\\\\\\\\\\"text\\\\\\\\\\\\" /> <input id=\\\\\\\\\\\\"course_chapter_attributes__content_item_attributes__end_time\\\\\\\\\\\\" name=\\\\\\\\\\\\"course[chapter_attributes][][content_item_attributes][][end_time]\\\\\\\\\\\\" size=\\\\\\\\\\\\"30\\\\\\\\\\\\" type=\\\\\\\\\\\\"text\\\\\\\\\\\\" />
</li>
\\\\" });\'); throw e }; return false;\\\">Add Content Item</a>
</li>
\" });'); throw e }; return false;">Add Chapter</a>
Pourriez-vous nous signaler toute l'erreur et le javascript qui a été généré? – EmFi
EmFi, je ne peux pas obtenir l'erreur complète (firebug ne me donne plus d'infos), mais j'ai juste ajouté le lien qui est généré et ne fonctionne pas. – LMH
Désolé, l'erreur est apparue comme un extrait. En regardant de plus près, c'est une erreur complète. Ce javascript généré est vraiment difficile à lire, est-il possible de remplacer \ n par de nouveaux caractères de ligne? Je pourrais le faire, mais cela m'aide seulement et pas n'importe qui d'autre qui regarde votre question. – EmFi