2012-06-25 99 views
0

我是新手RoR開發者。我陷入了一個問題。我正在嘗試爲可以創建主題的用戶創建應用程序,而其他人可以在主題下張貼他們的評論。主題由用戶創建,並在主頁面上列出。我幾乎完成了這些主題。但是,當我點擊他們看帖子,我得到無法找到主題沒有ID錯誤。RoR找不到沒有ID的主題

我想我的錯誤是主題有兩個索引id和user_id。 這裏是我的主題模式:

class Topic < ActiveRecord::Base 
    attr_accessible :content, :title 
    belongs_to :user 
    has_many  :posts 
    validates :title, presence: true, length: { maximum: 140 } 
    validates :content, presence: true 
    validates :user_id, presence: true 
    default_scope order: 'topics.created_at DESC' 
end 

我的崗位模型

class Posts < ActiveRecord::Base 
    attr_accessible :content 
    belongs_to :topic 
    belongs_to :user 
    validates :user_id, presence: true 
    validates :content, presence: true 
    default_scope order: 'posts.created_at DESC' 
end 

這是我topics_controller.rb:

class TopicsController < ApplicationController 
    before_filter :signed_in_user, only: [:create, :destroy] 
    before_filter :correct_user, only: :destroy 

    def show 
     @topic = Topic.find(params[:id]) 
     @posts = @topic.posts.paginate :page => params[:page], :per_page => 20 
    end 
     . 
     ..vs 

,這是我的config/routes.rb中

MyPedia::Application.routes.draw do 
    resources :users 
    resources :sessions, only: [:new, :create, :destroy] 
    resources :topics, only: [:show, :create, :destroy] 
    resources :posts 
    root to: 'static_pages#home' 


    match '/topicin', to: 'topics#show' 
    match '/signup', to: 'users#new' 
    match '/signin', to: 'sessions#new' 
    match '/signout', to: 'sessions#destroy', via: :delete 

    match '/help', to: 'static_pages#help' 
    match '/about', to: 'static_pages#about' 
    match '/contact', to: 'static_pages#contact' 

我的t opics show.html.erb

<% title @topic.title %> 
<div class ="center"> 
<h3><%= @topic.title %></h3> 

<% if @posts? %> 


    <% for post in @posts do %> 
    <p><strong><%= post.content %> 
    <% end %> 
<% end %> 
</div> 

我試圖找到解決這個問題的方法。 感謝幫助

+0

可以共享URL您使用,並得到這個錯誤?它是一個現有的ID嗎?你在使用資源路線還是後來的匹配路線?一般順便說一句,有重疊的路線不是一個好主意。 – Achilles

+0

http:// localhost:3000/topicin這是我得到的錯誤地址。 – ytsejam

+0

是的,你重新使用該路線錯誤。/topicin沒有指定ID,所以應用程序無法顯示記錄,因此是例外。 – Achilles

回答

0

雖然有主題寧靜的路線,在話題#的路線顯示沒有:id

match '/topicin', to: 'topics#show' # <===== :id is missing 

也許這是造成問題。

0

只需添加

match '/topicin/:id', to: 'topics#show' 
+0

Rails按照@ytsejam路由文件爲主題提供寧靜路線。您的答案將創建一個冗餘路線。 –

相關問題