has_one关系构建但在页面加载时删除旧条目

时间:2017-03-10 18:07:36

标签: html ruby-on-rails forms foreign-key-relationship

我正在尝试为评论做一个。如果为某人提供服务,则他们可以review reservation /服务。因此reservations有一个has_one :review

enter image description here 预订模式:

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>

0 个答案:

没有答案