Ruby on rails 嵌套资源的路由错误

Ruby on rails 嵌套资源的路由错误,ruby-on-rails,ruby-on-rails-3.2,routes,associations,Ruby On Rails,Ruby On Rails 3.2,Routes,Associations,我正在构建论坛rails应用程序,嵌套资源有问题 这里是controller/school/forums\u controller.rb def index @forums = Forum.all end def show @forum = Forum.find(params[:id]) @per_page = params[:per_page] || 15 @topics = @forum.topics.search(params[:search

我正在构建论坛rails应用程序,嵌套资源有问题

这里是
controller/school/forums\u controller.rb

  def index
    @forums = Forum.all
  end


  def show
    @forum = Forum.find(params[:id])
    @per_page = params[:per_page] || 15
    @topics = @forum.topics.search(params[:search]).paginate(:per_page => @per_page, :page => params[:page])
  end
  def new
    @forum = Forum.find(params[:forum_id])
    @topik = @forum.topiks.build
  end

  def create
    @forum = Forum.find(params[:forum_id])
    @topic = @forum.topics.build(params[:topic])
       if @topic.save
          redirect_to school_forum_topic_path(@topic)
        else
          render :action => "new"
        end
  end

  def show
    @forum = Forum.find(params[:forum_id])
    @topic = Topic.find(params[:id])
  end
get '/forum' => 'school/forums#index', :as => :forum_subdomain

namespace :school, :path => '/' do
        resources :forums, :path => '/forum', :only => [:show] do
          resources :topics
        end
end


 forum_subdomain GET    /forum(.:format)
                        school/forums#index {:subdomain=>/.+/}
                    school_forum_topics GET    /fr/:forum_id/topics(.:
format)                 school/topics#index {:subdomain=>/.+/}
                                           POST   /forum/:forum_id/topics(.:
format)                 school/topics#create {:subdomain=>/.+/}
                 new_school_forum_topic GET    /forum/:forum_id/topics/ne
w(.:format)             school/topics#new {:subdomain=>/.+/}
                edit_school_forum_topic GET    /forum/:forum_id/topics/:i
d/edit(.:format)        school/topics#edit {:subdomain=>/.+/}
                     school_forum_topic GET    /forum/:forum_id/topics/:i
d(.:format)             school/topics#show {:subdomain=>/.+/}
                                           PUT    /forum/:forum_id/topics/:i
d(.:format)             school/topics#update {:subdomain=>/.+/}
                                           DELETE /forum/:forum_id/topics/:i
d(.:format)             school/topics#destroy {:subdomain=>/.+/}
                           school_forum GET    /forum/:id(.:format)
                        school/forums#show {:subdomain=>/.+/}
这里是
controller/school/topics\u controller.rb

  def index
    @forums = Forum.all
  end


  def show
    @forum = Forum.find(params[:id])
    @per_page = params[:per_page] || 15
    @topics = @forum.topics.search(params[:search]).paginate(:per_page => @per_page, :page => params[:page])
  end
  def new
    @forum = Forum.find(params[:forum_id])
    @topik = @forum.topiks.build
  end

  def create
    @forum = Forum.find(params[:forum_id])
    @topic = @forum.topics.build(params[:topic])
       if @topic.save
          redirect_to school_forum_topic_path(@topic)
        else
          render :action => "new"
        end
  end

  def show
    @forum = Forum.find(params[:forum_id])
    @topic = Topic.find(params[:id])
  end
get '/forum' => 'school/forums#index', :as => :forum_subdomain

namespace :school, :path => '/' do
        resources :forums, :path => '/forum', :only => [:show] do
          resources :topics
        end
end


 forum_subdomain GET    /forum(.:format)
                        school/forums#index {:subdomain=>/.+/}
                    school_forum_topics GET    /fr/:forum_id/topics(.:
format)                 school/topics#index {:subdomain=>/.+/}
                                           POST   /forum/:forum_id/topics(.:
format)                 school/topics#create {:subdomain=>/.+/}
                 new_school_forum_topic GET    /forum/:forum_id/topics/ne
w(.:format)             school/topics#new {:subdomain=>/.+/}
                edit_school_forum_topic GET    /forum/:forum_id/topics/:i
d/edit(.:format)        school/topics#edit {:subdomain=>/.+/}
                     school_forum_topic GET    /forum/:forum_id/topics/:i
d(.:format)             school/topics#show {:subdomain=>/.+/}
                                           PUT    /forum/:forum_id/topics/:i
d(.:format)             school/topics#update {:subdomain=>/.+/}
                                           DELETE /forum/:forum_id/topics/:i
d(.:format)             school/topics#destroy {:subdomain=>/.+/}
                           school_forum GET    /forum/:id(.:format)
                        school/forums#show {:subdomain=>/.+/}
这是
routes.rb

  def index
    @forums = Forum.all
  end


  def show
    @forum = Forum.find(params[:id])
    @per_page = params[:per_page] || 15
    @topics = @forum.topics.search(params[:search]).paginate(:per_page => @per_page, :page => params[:page])
  end
  def new
    @forum = Forum.find(params[:forum_id])
    @topik = @forum.topiks.build
  end

  def create
    @forum = Forum.find(params[:forum_id])
    @topic = @forum.topics.build(params[:topic])
       if @topic.save
          redirect_to school_forum_topic_path(@topic)
        else
          render :action => "new"
        end
  end

  def show
    @forum = Forum.find(params[:forum_id])
    @topic = Topic.find(params[:id])
  end
get '/forum' => 'school/forums#index', :as => :forum_subdomain

namespace :school, :path => '/' do
        resources :forums, :path => '/forum', :only => [:show] do
          resources :topics
        end
end


 forum_subdomain GET    /forum(.:format)
                        school/forums#index {:subdomain=>/.+/}
                    school_forum_topics GET    /fr/:forum_id/topics(.:
format)                 school/topics#index {:subdomain=>/.+/}
                                           POST   /forum/:forum_id/topics(.:
format)                 school/topics#create {:subdomain=>/.+/}
                 new_school_forum_topic GET    /forum/:forum_id/topics/ne
w(.:format)             school/topics#new {:subdomain=>/.+/}
                edit_school_forum_topic GET    /forum/:forum_id/topics/:i
d/edit(.:format)        school/topics#edit {:subdomain=>/.+/}
                     school_forum_topic GET    /forum/:forum_id/topics/:i
d(.:format)             school/topics#show {:subdomain=>/.+/}
                                           PUT    /forum/:forum_id/topics/:i
d(.:format)             school/topics#update {:subdomain=>/.+/}
                                           DELETE /forum/:forum_id/topics/:i
d(.:format)             school/topics#destroy {:subdomain=>/.+/}
                           school_forum GET    /forum/:id(.:format)
                        school/forums#show {:subdomain=>/.+/}
当我访问
subdomain.lvh.me:3000/forum/1-room-biology

Routing Error

No route matches {:action=>"new", :controller=>"school/topics"}
这里是
views/school/forums/show.html.erb

<%= link_to new_school_forum_topic_path , :class => "btn btn-inverse btn-medium" do %>
 New Topic
<% end %>

<% for topic in @topics %>
<%= link_to topic.title, school_forum_topic_path(topic) %>
<% end %>
“btn反向btn介质”do%>
新话题

我该如何正确地执行此操作和/或正确的路由方式是什么?

您对
新学校论坛主题路径的呼叫需要提供论坛,例如
新学校论坛主题路径(@forum)


有关Rails中嵌套资源路由的更多信息:

是否为forums\u controoler.rb?拼写检查,因为它可能会引起麻烦。不
rake routes
告诉您需要提供什么—在第二个示例中,
school\u forum\u topic\u path
匹配
/forum/:forum\u id/topics/:id
,因此您需要同时提供论坛和主题。