Раздел комментариев не работает правильно при использовании ajax в рельсах - PullRequest
0 голосов
/ 20 июня 2019

Я новичок в рельсах и пытаюсь добавить обзор для предмета без перезагрузки этой страницы. Но когда я нажал кнопку «Отправить», он показал мне повторяющиеся отзывы и не показал рейтинг, который был сделан ранее. Если я обновлю эту страницу, все вернется на круги своя.

в моих маршрутах.rb:

resources :items do 
  resources :reviews
end

в review_controller.rb:

def create
    @review = Review.new(review_params)
    @review.item_id = @item.id
    @review.user_id = current_user.id
    respond_to do |format|
        if @review.save
          format.js
          format.html { redirect_to item_path(@item)}
        else
            format.html { render :new}
        end
    end
end

в просмотрах / обзорах / create.js.erb

$('#new-review').parent().append("<%= j render @item.reviews %>");

в views / items / show.html.erb

<div class = "row">
 <div class = "col-md-4">
   <div id = 'new-review'>
      <%= render @item.reviews %>
   </div>
 </div> 
</div>
<h2>Add review</h2>
<%= render "reviews/form" %>

//adding star rating 
<script>
$('.average-review-rating').raty({
    readOnly: true,
    path: '/assets/',
    score: function() {
        return $(this).attr('data-score')
    }
});
</script>

<script>
$('.review-rating').raty({
readOnly: true,
path: '/assets/', 
score: function() {
return $(this).attr('data-score');
}
});
</script>

в отзывах / _form.html.erb:

<%= form_for([@item, @item.reviews.build], remote: true) do |f|  %>
  <div id ="rating-form">
    <label>Rating</label>
  </div>
 <%= f.label :comment %> 
 <%= f.text_field :comment, class: "form-control" %>
 <%= f.button :submit %>
<% end %>

<script>
$('#rating-form').raty({
    path: '/assets/',
    scoreName: 'review[rating]'
});
</script>    

I took the rating star from jquery.raty
And this is what happened:


 [1]: https://i.stack.imgur.com/fkaFP.png

1 Ответ

0 голосов
/ 20 июня 2019

Как я вижу, вы должны отделить макет для вашего обзора в отдельном частичном, а затем загрузить в *.js.erb файл только его.Вы рендерите @item.reviews еще раз каждый раз сейчас.Код JS для рейтинга должен быть также в *.js.erb файле, чтобы запустить ajax complete.

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