Как я могу заставить jQuery обновить элемент на странице после отправки формы с помощью AJAX в приложении ruby-on-rails? - PullRequest
2 голосов
/ 06 июля 2011

Я пытаюсь использовать jQuery с Rails и AJAX, чтобы принять сообщение от пользователя и обновить соответствующие элементы на странице, чтобы отобразить новое сообщение.

Я успешно установил пост-модель и контроллер в своем приложении и адаптировал его для приема отправленных форм с помощью AJAX. Я знаю, что отправка формы AJAX работает, но я не могу загрузить элементы на своей странице для перезагрузки. У меня есть модель Post, контроллер Posts, частичный _post_form.html.erb, который имеет HTML-форму для публикации, и соответствующий файл create.js.erb.

Текущий файл create.js.erb содержит (без what_to_put_here):

 alert('ajax works!');
 $('#user_info').what_to_put_here?

Когда он содержит только предупреждение, файл работает, и появляется диалоговое окно с сообщением. Итак, я уверен, что все работает. Тем не менее, я просто не могу понять, какой код пользователю обновить элемент user_info и таблицу сообщений. Я использую jQuery и jQuery UI для моих javascripts.

Итак, как мне написать в файле create.js.erb способ обновления таблицы сообщений и user_info current_user.posts.count?

Ниже приведен файл show.html.erb:

 <section>
 <%= render 'shared/discussion_overview' %>
 <% unless @posts.nil? %>
 <h3> Thoughts and Opinions </h3>
 <table class= "posts">
         <%= render @posts %>
 </table>
 <%= will_paginate(@posts) %>
 <% end %>
 <%= render 'posts/post_form' %>
 </section>

Частичные сообщения _post.html.erb:

 <tr>
<td >
    <span class="post_header"><h4><%= link_to "#{post.user.first_name} #{post.user.last_name}", post.user %></h4></span>
    <p> <%= post.content %> </p>
</td>
 </tr>

И часть _user_info.html.erb (на которую ссылается application.html.erb):

 <div id="user_info">
<h1><a href = "<%= user_path(current_user) %>" >
<%= "#{current_user.first_name} #{current_user.last_name}" %>
</a></h1>
<%= pluralize(current_user.posts.count, "post") %> <br>
<%= pluralize(current_user.discussions.count, "discussion")%> <br>

Joined <%= time_ago_in_words(current_user.created_at)%> ago.
 </div>

1 Ответ

1 голос
/ 06 июля 2011
$('#user_info').html("<%= escape_javascript(render :partial => 'user_info')%>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...