true) do ) %>" + " " + " " + " " + "" + "" ); $('#add_tag').dialog({ title:"> true) do ) %>" + " " + " " + " " + "" + "" ); $('#add_tag').dialog({ title:"> true) do ) %>" + " " + " " + " " + "" + "" ); $('#add_tag').dialog({ title:" />

Een formulier maken in JQuery UI Dialoogvenster met Rails/ERB

Sorry als dit een domme vraag is, maar ik kan dit niet laten werken. Ik probeer een formulier binnen een dialoogvenster te krijgen. Het formulier is het resultaat van een AJAX-aanvraag en het resulterende js.erb-bestand ziet er als volgt uit:

$(function() {
$('#add_tag').html(
  "
" "<%= escape_javascript(form_tag(save_tag_path(:id=>@recipe.id), :remote=>true) do ) %>" + " <%= escape_javascript(label_tag(:new_tags, 'Your tags separated by commas')) %>" + " <%= escape_javascript(text_field_tag :new_tags) %>" + " <%= escape_javascript(submit_tag :submit) %>" + "<% end %>" + "
" ); $('#add_tag').dialog({ title: "Add Tags", height: 300, width: 350, modal: true } ); });

Ik weet de vormsyntaxis ok is omdat het buiten het dialoog werkt. Ik neem aan dat het iets is dat niet goed is ontsnapt? Bij voorbaat dank!

UPDATE: Ik heb de $ (function() {} wrapper verwijderd zoals Ben Simpson correct vermeldde, maar ik krijg nog steeds niets weergegeven in mijn paneel met erb. Dit is wat ik nu heb:

$('#add_tag').html(
"
" + "<%= form_tag(save_tag_path(:id=>@recipe.id), :remote=>true) do %>" + " <%= escape_javascript(label_tag(:new_tags, 'Your tags separated by commas')) %>" + " <%= text_field_tag :new_tags %>" + " <%= submit_tag :submit %>" + "<% end %>" + "
" ); $('#add_tag').dialog({ title: "Add Tags", height: 300, width: 350, modal: true } );

Maar als ik het zojuist in de vorm heb gezet dat rails het doet werken. D.w.z:

$('#add_tag').html(
  "
" + '<form method="post" data-remote="true" action="/recipes/1/save_tag" accept-charset="UTF-8">' + '<div style="margin: 0pt; padding: 0pt; display: inline;">' + '</div>' + '' + '<input id="new_tags" type="text" name="new_tags">' + '<input type="submit" value="submit" name="commit">' + '</form>' + "
");
1

1 antwoord

Uw antwoord is verpakt in een "$ (function() {}" -sluiting, die jQuery-afkorting is voor binding aan de DOM: loaded-gebeurtenis. Deze is al afgevuurd toen de pagina werd geladen.

Verwijder deze regel en uw functie zou automatisch moeten evalueren.

Javascript inside an AJAX response should be evaluated automatically as long as the MIME type is text/javascript. More information on jQuery AJAX responses can be found here: http://api.jquery.com/jQuery.ajax/

0
toegevoegd
Nadat dit AJAX-antwoord is geladen, zie je elke HTML als je $ ('# add_tag'). Html() in een Javascript-console uitvoert? Ik vermoed dat je
-tags ziet, maar niet je formulier. Meestal heb ik gezien dat formulieren die in RJS zijn weergegeven een partiƫle oproep doen in plaats van dat de vorm inline is. Probeer 'escape_javascript (render: partial => "form")'
toegevoegd de auteur Ben Simpson, de bron
Ah, ja. Ik dacht niet aan de DOM: geladen. Maar zelfs als dat wordt verwijderd, krijg ik niets. Maar als ik de erb-code uitschakel met alleen de formulier-tags, enz. Dan werkt het. Bedankt voor de hulp tot nu toe!
toegevoegd de auteur Stephen Philp, de bron
Ja! Dat loste het op!
toegevoegd de auteur Stephen Philp, de bron