0

Rails 3 ブログ スタイルのアプリケーションがあり、バックエンド用のadmin名前空間と、それぞれのposts_controller.rbを含むcontrollers/adminサブフォルダーがあります。

そのため、ページのルート URL は「admin/posts#index」に設定されており、ユーザーが「/admin/articles」と入力した場合にユーザーを root_url にリダイレクトするようにルート ファイルを構成する場合を除いて、投稿の作成は正常に機能します。

これは私のルートファイルです:

BlogDos::Application.routes.draw do
  # Index
  root to: "admin/posts#index"

  # If I uncomment these two lines below, the post#create function doesn't work. When I 
  # submit the "new post" form, the controller just skips the function entirelly and  
  # redirects me to admin/posts#index without creating the new post.
  # match "admin/posts" => redirect("/")
  # match "admin/posts/" => redirect("/")

  namespace :admin do
    resources :cpanel
    resources :posts do
      resources :comments, :only => [:create, :destroy]
    end
    root to: "cpanel#index"
  end
..
end

そして、これは私のposts_controller.rb です

def create
    @usuario = current_user
    @post = @usuario .posts.create(params[:post])

    respond_to do |format|
      if @post.save
        format.html { redirect_to article_dir_path(@post.year, @post.month, @post.slug), notice: 'Article was successfully created.' }
        format.json { render json: article_dir_path(@post.year, @post.month, @post.slug), status: :created, location: article_dir_path(@post.year, @post.month, @post.slug) }
      else
        format.html { render action: "new" }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

奇妙なことに、これは作成アクションでのみ発生します。記事を編集して更新すると、すべて正常に機能します。RailsのチュートリアルとQA Webサイトを見て、ほとんどすべてを整理しましたが、この小さな問題を除いて、かなり単純なものだと確信していますが、Railsは初めてで、ルーティングの仕組みにはまだあまり慣れていません.

4

1 に答える 1