Zugegebenermaßen fragte ich vor ein paar Tagen darüber, aber ich war nicht klar, also habe ich keine richtigen Antworten bekommen. Also habe ich diese Mini-Blog-Sache auf meiner Website und ich habe festgestellt, dass wenn ich ungültige Daten eingeben (dh Titel zu kurz) bekomme ich umgeleitet von von x.com/posts/new (oder/bearbeiten) zu indexieren (x.com/posts), trotz der Tatsache, dass der Post-Index nicht existiert (außer: Index hinzugefügt in Routen).Bug: Routing zum Index, wenn der Index nicht existiert
Beiträge Controller
class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy]
before_action :admin_user, except: [:show]
def show
end
def new
@post = current_user.posts.build
@categories = Category.all.where(belongs_to_posts: true)
end
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def edit
@categories = Category.all.where(belongs_to_posts: true)
end
def update
if @post.update(post_params)
redirect_to @post
else
render 'edit'
end
end
def destroy
@post.destroy
redirect_to root_path
end
private
def find_post
@post = Post.find(params[:id])
end
def post_params
params.require(:post).permit(:description, :title, :image, :categories_id)
end
def admin_user
redirect_to(root_url) unless current_user.admin?
end
end
Routen
Rails.application.routes.draw do
root
...
get 'galleries/accept' => 'galleries#accept'
resources :galleries
resources :photos
resources :posts, except: [:index]
resources :categories
resources :documents
end
_form für Beiträge
= simple_form_for @post do |f|
= f.input :image
= f.input :title
= f.input :categories_id, :collection => @categories, label_method: :name, value_method: :id
= f.cktext_area :description, data: {no_turbolink: true}, :ckeditor => {:toolbar => 'mini'}
= f.button :submit
Es Vielleicht ist es erwähnenswert, dass der Index nicht existiert, weil ich Beiträge auf der Hauptseite zeige. Danke für Ihre Hilfe!
vielen Dank, das war sehr lehrreich! Ich weiß aber immer noch nicht recht, wie ich mit dem Problem umgehen soll. Ich nehme an, es geht um 'wenn @ post.save redirect_to @post sonst 'neu' rendern, oder? Wie repariere ich das? – Ivan