Как я могу удалить форму создания отзыва после отправки с помощью AJAX? - PullRequest
0 голосов
/ 12 мая 2011

Я создаю приложение, в котором пользователи могут писать отзывы о местах и ​​в настоящее время имеют форму добавления отзыва на странице показа мест. Когда пользователь добавляет отзыв, он обновляет страницу с помощью AJAX и отображает обзор. Когда страница перезагружается, она распознает, что текущий пользователь написал отзыв, и не показывает форму добавления нового отзыва.

Как я могу добавить это в функцию AJAX, чтобы она автоматически удаляла форму добавления нового отзыва при отправке отзыва?

место проведения show.html.erb

  <div id="reviews">
    <%= render :partial => 'reviews/review', :collection => @venue.reviews %>
  </div>

  <% unless reviewed? %>
    <%= form_for [@venue, @review], :class => 'rating_ballot' do |f| %>
      <%= f.label("value_1", content_tag(:span, '1'), {:class=>"rating", :id=>"1"}) %>
      <%= radio_button_tag("review[rating]", 1, :class => 'rating_button') %>

      <%= f.label("value_2", content_tag(:span, '2'), {:class=>"rating", :id=>"2"}) %>
      <%= radio_button_tag("review[rating]", 2, :class => 'rating_button') %>

      <%= f.label("value_3", content_tag(:span, '3'), {:class=>"rating", :id=>"3"}) %>
      <%= radio_button_tag("review[rating]", 3, :class => 'rating_button') %>

      <%= f.label("value_4", content_tag(:span, '4'), {:class=>"rating", :id=>"4"}) %>
      <%= radio_button_tag("review[rating]", 4, :class => 'rating_button') %>

      <%= f.label("value_5", content_tag(:span, '5'), {:class=>"rating", :id=>"5"}) %>
      <%= radio_button_tag("review[rating]", 5, :class => 'rating_button') %> <br>

      <p>title: <br>
      <%= f.text_field :title %></p><br>

      <%= submit_tag %>
    <% end %>
  <% end %>

обзор _review.html.erb

<div class="review">

  <div class="reviewer_details">
    <div class="reviewer_details_photo"></div>
    <%= review.user.username %>
  </div>

  <div class="review_content">
    <h2 class="review_partial_title"><%= link_to review.title, [@venue, review] %></h><br>
    <p><%= review.rating %></p>
  </div>

  <div class="clearall"></div>
</div>

рецензия create.js.erb

$("#new_review").before('<div id="flash_notice"><%= escape_javascript(flash.delete(:notice)) %></div>');
$("#reviews_count").html("<%= pluralize(@review.venue.reviews.count, 'Review') %>");
$("#reviews").append("<%= escape_javascript(render(:partial => @review)) %>");
$("#new_review")[0].reset();

Спасибо за любую помощь, она очень ценится!

1 Ответ

2 голосов
/ 12 мая 2011

По вашему мнению, оберните форму в div с идентификатором, скажем "review_form".

    <div id="reviews">
    <%= render :partial => 'reviews/review', :collection => @venue.reviews %>
    </div>
    <% unless reviewed? %>
    <div id="review_form">
    <%= form_for [@venue, @review], :class => 'rating_ballot' do |f| %>
      <%= f.label("value_1", content_tag(:span, '1'), {:class=>"rating", :id=>"1"}) %>
      <%= radio_button_tag("review[rating]", 1, :class => 'rating_button') %>

      <%= f.label("value_2", content_tag(:span, '2'), {:class=>"rating", :id=>"2"}) %>
      <%= radio_button_tag("review[rating]", 2, :class => 'rating_button') %>

      <%= f.label("value_3", content_tag(:span, '3'), {:class=>"rating", :id=>"3"}) %>
      <%= radio_button_tag("review[rating]", 3, :class => 'rating_button') %>

      <%= f.label("value_4", content_tag(:span, '4'), {:class=>"rating", :id=>"4"}) %>
      <%= radio_button_tag("review[rating]", 4, :class => 'rating_button') %>

      <%= f.label("value_5", content_tag(:span, '5'), {:class=>"rating", :id=>"5"}) %>
      <%= radio_button_tag("review[rating]", 5, :class => 'rating_button') %> <br>

      <p>title: <br>
      <%= f.text_field :title %></p><br>

      <%= submit_tag %>
    <% end %>
    </div>
  <% end %>

Затем в create.js.erb добавьте jquery, чтобы очистить его содержимое, спрятать или удалить все вместе.

$("#review_form").hide();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...