我正在尝试为评论做一个。如果为某人提供服务,则他们可以review
reservation
/服务。因此reservations
有一个has_one :review
。
has_one :review, :dependent => :destroy
的routes.rb
resources :reservations do
resources :reviews, only: [:create, :destroy]
end
这就是我的表格:
<%= form_for([reservation, reservation.build_review]) do |f| %>
<h>How would you rate your reviser?</h>
<div style="">
<div style="display:inline-block;" id="user_stars"></div>
</div>
<div class="" style="margin-top:5px;margin-bottom:3px;">
<label>Comment:</label>
<%= f.text_area :comment, rows: 3, class: "form-control" %>
</div>
<%= f.hidden_field :reviser_id, value: reservation.reviser.id %>
<%= f.hidden_field :reservation_id, value: reservation.id %>
<div class="actions">
<%= f.submit "Comment", class: "btn btn-primary" %>
</div>
<% end %>
以下是我的评论控制器create
操作
def create
@review = current_user.reviews.create(review_params)
redirect_to completed_assignments_reservations_path, notice: "Thank You!! Your review has been submitted!"
end
更新我所知道的!!:
每当我添加redirect_to时,该条目都不会保存到db但是当我删除它时。 db条目保存在db中。 redirect_to正在弄乱它,即使我添加了if @review.save
redirect_to搞砸了......那么这可能是什么原因?
经过思考和观察后,我们得出结论为什么它这样做但到目前为止还没有解决方案。当页面首次加载时,我正在使用部分调用_form.html.erb
部分加载,即使是在下拉列表中,也就是从中拉出表单的位置。因此,当我重定向回到该页面时,审核会被删除,因为它的行为与新页面类似,并删除条目以获取新条目。如何防止页面加载新删除,而是为了使用户必须提交表单的新条目,然后将替换旧的db值。
总而言之,page load
不是on form submit
我在表单中添加了, force_non_association_create: true
,看看是否会停止自动提交页面加载。仍然有同样的问题,我会检查它是否适用于下拉链接..我认为这将是解决方案。
我将:force_non_association_create => true
添加到几乎所有内容中仍然无法正常工作..我带走了redirect_to以确保它在没有它的情况下仍能正常工作。我还在redirect_to中添加了:force_non_association_create => true
,以防我将它添加到任何地方,但仍然没有...
以下是加载_forms.html.erb的部分completed_reservations.html.erb
加载的link_to部分:
<div style="margin-top:30px;">
<%= link_to 'javascript:;', :class => "request-popover", :"data-placement" => "left", :force_non_association_create => true, :rel => "popover", :"data-content" => "#{render 'reviews/form', reservation: reservation}", :"data-class" => "review-form-popover" do %>
<i style="font-size:40px;color:#45d1b8;" class="fa fa-thumbs-o-up" aria-hidden="true"></i>
<% end %>
<script>
$(function() {
$('.request-popover').popover({
template: '<div class="popover special-class2"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>',
html: true
});
});
</script>
</div>