Fix #5347: Don't use exception template for post validation errors
Also fixes #5173: Parenting a post to itself using the "parent id" box leads to an error.
This commit is contained in:
@@ -174,13 +174,10 @@ class PostsController < ApplicationController
|
||||
end
|
||||
|
||||
if post.errors.any?
|
||||
@error_message = post.errors.full_messages.join("; ")
|
||||
render :template => "static/error", :status => 500
|
||||
else
|
||||
response_params = {:q => params[:tags_query], :pool_id => params[:pool_id], :favgroup_id => params[:favgroup_id]}
|
||||
response_params.reject! {|_key, value| value.blank?}
|
||||
redirect_to post_path(post, response_params)
|
||||
flash[:notice] = post.errors.full_messages.join("; ")
|
||||
end
|
||||
|
||||
redirect_to post_path(post, { q: params[:q] }.compact_blank)
|
||||
end
|
||||
|
||||
format.json do
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
<%= render_source_data(nil) %>
|
||||
|
||||
<%= edit_form_for(post, html: { id: "form" }) do |f| %>
|
||||
<%= f.input :tags_query, as: :hidden, input_html: { id: nil, name: "tags_query", value: params[:q] } %>
|
||||
<%= f.input :pool_id, as: :hidden, input_html: { id: nil, name: "pool_id", value: params[:pool_id] } %>
|
||||
<%= f.input :favgroup_id, as: :hidden, input_html: { id: nil, name: "favgroup_id", value: params[:favgroup_id] } %>
|
||||
<%= f.input :q, as: :hidden, input_html: { id: nil, name: "q", value: params[:q] } %>
|
||||
<%= f.input :old_tag_string, as: :hidden, input_html: { value: post.tag_string } %>
|
||||
<%= f.input :old_parent_id, as: :hidden, input_html: { value: post.parent_id } %>
|
||||
<%= f.input :old_source, as: :hidden, input_html: { value: post.source } %>
|
||||
|
||||
@@ -299,9 +299,7 @@
|
||||
|
||||
<section id="mark-as-translated-section">
|
||||
<%= edit_form_for(@post, url: mark_as_translated_post_path(@post), method: :put) do |f| %>
|
||||
<%= f.input :tags_query, as: :hidden, input_html: { id: nil, name: "tags_query", value: params[:q] } %>
|
||||
<%= f.input :pool_id, as: :hidden, input_html: { id: nil, name: "pool_id", value: params[:pool_id] } %>
|
||||
<%= f.input :favgroup_id, as: :hidden, input_html: { id: nil, name: "favgroup_id", value: params[:favgroup_id] } %>
|
||||
<%= f.input :q, as: :hidden, input_html: { id: nil, name: "q", value: params[:q] } %>
|
||||
|
||||
<fieldset class="inline-fieldset">
|
||||
<%= f.input :check_translation, as: :boolean, input_html: { checked: @post.has_tag?("check_translation") } %>
|
||||
|
||||
@@ -787,7 +787,7 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
context "update action" do
|
||||
should "work" do
|
||||
should "redirect to the post on success" do
|
||||
put_auth post_path(@post), @user, params: {:post => {:tag_string => "bbb"}}
|
||||
assert_redirected_to post_path(@post)
|
||||
|
||||
@@ -812,6 +812,13 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response 403
|
||||
assert_not_equal("blah", @post.reload.tag_string)
|
||||
end
|
||||
|
||||
should "not raise an exception on validation error" do
|
||||
put_auth post_path(@post), @user, params: { post: { parent_id: @post.id }}
|
||||
assert_redirected_to post_path(@post)
|
||||
|
||||
assert_nil(@post.parent_id)
|
||||
end
|
||||
end
|
||||
|
||||
context "destroy action" do
|
||||
|
||||
Reference in New Issue
Block a user