2013-04-27 3 views
0

Я создаю приложение rails для форума, у меня проблема с вложенными ресурсами.Ошибка маршрутизации Вложенные ресурсы

здесь controller/school/forums_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 

здесь controller/school/topics_controller.rb

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 

Вот routes.rb

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 %> 

Как сделать это правильно, и/или то, что является правильным способом маршрутизировать все это?

+0

ли это forums_controoler.rb? Проверка орфографии, так как это может вызвать проблемы. – Nerve

+0

извините, это опечатка .. –

ответ

0

Ваш звонок new_school_forum_topic_path должен содержать форум, например. new_school_forum_topic_path(@forum).

Для получения дополнительной информации о вложенной маршрутизации ресурсов в Rails: http://guides.rubyonrails.org/routing.html#nested-resources

+0

отлично, спасибо, я был менее скрупулезным .. –

+0

№ 'rake routes' сообщает вам, что вам нужно предоставить - в этом втором примере' school_forum_topic_path' соответствует '/ forum /: forum_id/themes/themes/: id', поэтому вам нужно предоставить как форум, так и тему. – sevenseacat

+0

приятно, спасибо :) –

Смежные вопросы