Problem z ajaxowym wstawianiem danych

Tym razem mam problem z dynamicznym dodawaniem komentarzy przez ajax.

Mam taki oto formularz w widoku artykułu:

[code] <% remote_form_for Comment.new :controller => “comments”, :action => “create” do |f| %>


<%= f.label “Twój komentarz” %>

<%= f.text_area :value %>


<%= f.submit %>


<% end -%>
  • Pierwsyz
  • Drugi
[/code] Oraz tego typu akcję create w kontrolerze comments: [code] def create @comment = Comment.new(params[:comment]) @comment.user_id = current_user if @comment.save render :update do |page| page.insert_html :bottom, 'mojalista', '
  • Last item
  • ' end #redirect_back_or_default(@comment) else redirect_back_or_default(new_comment_url) end end[/code] Póki co chciałem po prostu sobie przetestować wstawienie w ten sposób elementów. Docelowo chciałbym, żeby tak się ładował komentarz, ale zaciąłem się na ładowaniu elementu Last item do listy "mojalista"

    Przy obecnym stanie rzeczy po kliknięciu submita nie dzieje się nic wspólnego z ajaxem. Strona się przeładowuje na adres: http://0.0.0.0:3000/comments
    A w oknie przeglądarki zamiast błędu widzę :

    [quote]try {
    Element.insert(“mojalista”, { bottom: “

  • Last item
  • ” });
    } catch (e) { alert(‘RJS error:\n\n’ + e.toString()); alert(‘Element.insert(“mojalista”, { bottom: “
  • Last item
  • ” });’); throw e }[/quote]

    Masz załączone javascripty w kodzie strony? <%= javascript_include_tag :defaults %> itede?

    Chyba nie w tym problem, w layouts/application.html.erb mam:

    <%= javascript_include_tag :all %>

    A może chodzi o to, że wyżej wspomniany remote_form_for mam w widoku kontrolera Posts, a akcja jest wykonywana w Comment?

    to nie robi, a w ogóle masz js włączone? robiłeś jakiś prost test typu alert(‘aaa’); co ci loguje Firebug czy coś podobnego?

    Na sztywno wrzuciłem takiego inputa do application.html.erb:

    <input type="button" value="aa" id="button" onclick="alert('aaa')">

    Po kliknięciu alert się pojawił, więc obsługa js jako taka jest :confused: Mnie cały czas nurtuje kwestia różnych kontrolerów oraz samego przekierowania na adres: 0.0.0.0:3000/comments nie powinno w najgorszym przypadku po prostu nic się zadziać? Przecież w remote_form_for tworzy taki szkielet, który powinien zapobiec wysłaniu dodatkowego zapytania POST do przeglądarki.

    No to lecisz dalej:

    $.post("/comments", { costam: “Dane” },
    function(data) {
    alert("Data Loaded: " + data);
    });

    Ogólnie odsyłam do http://api.jquery.com/jQuery.post/

    oraz plugin jquery form

    ja wolę zawsze sam napisać ten kawałek js, zamiast rjs, no ale kto co lubi

    Na pewno da się to napisać w czystym jquery. Mnie natomiast ciekawi dlaczego ten przykład znaleziony w książce oraz przedstawiony w różnych tutorialach najzwyczajniej u mnie nie działa…

    No jak w jquery czystym ci zadziała, to wtedy będziemy coś wiedzieć

    Wygląda jakbyś nie załączył biblioteki prototype, albo zamiast niej używał jquery.

    @warszk
    Twój post to strzał w dziesiątkę! :slight_smile: W layoucie aplikacji miałem “<%= javascript_include_tag :all %>”, teraz dałem " <%= javascript_include_tag :defaults %> i wszystko działa! W innym miejscu aplikacji testowałem slider z newsami i najprawdopodobniej te dodane przeze mnie biblioteki js się gryzą. Dziękuje wszystkim za odpowiedzi :wink: