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