ruby 创建操作失败,模板呈现后未显示错误

vwoqyblh  于 2023-04-20  发布在  Ruby
关注(0)|答案(1)|浏览(77)

这个功能在我一个月前实现的时候还在工作,我不知道为什么它停止工作了。我没有对任何相关的东西做任何修改,但我想我们都在那里,并且以不同的方式进行教学;)
我正在使用位于我的预订显示视图中的评论表单。当时,当验证失败时,它会完美地显示错误消息。现在,当@review.save失败时,它会呈现bookings/show的模板,但不会为用户显示任何错误。甚至我的控制台也不会显示任何错误。

partials/new-review.html.erb

<section class="review-form">
    <% if @host == current_user %>
        <h2>Let <%= @booking.user.first_name %> & us know about your experience!</h2>
    <% else %>
        <h2>Let <%= @host.first_name %> & us know about your experience!</h2>
    <% end %>

    <%= simple_form_for [@couch, @booking, @review] do |f| %>
        <div class="review-form__action">
            <%= f.input :rating,
                                  collection: (1..5).to_a,
                                  label: false,
                                  input_html: { data: {controller: 'star-rating' } } %>
            <%= f.error :rating, class: 'form-error form-error-rating' %>
            <%= f.label 'Leave some words' %>
            <%= f.input :content, 
                                  label: false,
                                  input_html: { rows: 6 } %>
            <%= f.error :content, class: 'form-error' %>
            <%= f.submit 'Submit Review', class: 'review-form__button' %>
        </div>
    <% end %>
</section>

review.rb

validates :content, presence: { message: 'Please add a few lines about your experience' }
validates :rating, presence: { message: 'Please leave a rating' }

reviews_controller.rb

if review.save
  things happen
else
  render 'bookings/show', locals: { booking: }
end

--〉这个if语句发生在另一个方法中,这就是为什么变量不是示例变量。不要担心这个,我检查了所有内容,变量都按预期工作。
我觉得渲染render 'bookings/show', locals: { booking: }是个问题,因为它实际上是渲染一个新的显示页面,而不是停留在显示页面上渲染错误。我错过了什么?

ca1c2owp

ca1c2owp1#

我只是简单地添加了unprocessable_entity,它再次显示错误消息。
render 'bookings/show', locals: { booking: }, status: :unprocessable_entity

相关问题