这个功能在我一个月前实现的时候还在工作,我不知道为什么它停止工作了。我没有对任何相关的东西做任何修改,但我想我们都在那里,并且以不同的方式进行教学;)
我正在使用位于我的预订显示视图中的评论表单。当时,当验证失败时,它会完美地显示错误消息。现在,当@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: }
是个问题,因为它实际上是渲染一个新的显示页面,而不是停留在显示页面上渲染错误。我错过了什么?
1条答案
按热度按时间ca1c2owp1#
我只是简单地添加了unprocessable_entity,它再次显示错误消息。
render 'bookings/show', locals: { booking: }, status: :unprocessable_entity