我正在建立一个论坛,并且线程已经设置并且查看没有问题。在尝试在线程中创建注释的过程中,我似乎对如何设置路由感到困惑。通常我知道人们有嵌套路线:
resources :threads do
resources :comments
end
虽然区别在于我的路线不使用资源方法,因为我单独设置它们:
get '/thread' => 'threads#discussion'
post '/create_thread' => 'threads#create'
get '/create_thread' => 'threads#new', :as => :new_thread
get '/threads/:id' => 'threads#show', :as => :thread_show
get 'threads/edit/:id' => 'threads#edit', :as => :edit_thread
put '/threads/edit/:id' => 'threads#update', :as => :update_thread
delete 'threads/:id' => 'threads#destroy'
线程/线程替换了实际的位置名称
我有办法在每个帖子中为评论放置嵌套路由吗?我为每个模型(用户,线程,注释)提供了正确的关联,并将user_id,thread_id添加到了注释模型。
如果您对正确设置评论路线或知道文章的方法有任何了解,请在此处列出。
非常感谢你!
修改
评论将直接放在主题页面上,而不是新页面。
乔
答案 0 :(得分:1)
您可以“手动”执行嵌套路由,如下所示:
get '/threads/:thread_id/comments/new' => 'comments#new'
get '/threads/:thread_id/comments/:id' => 'comments#show'
并且CommentsController的new
操作可以执行以下操作:
def new
@thread = Thread.find(params[:thread_id])
@comment = @thread.comments.build
end
但是,我非常同意Jordan's advice above;你的路线有点乱,不完全RESTful,并且通过资源丰富的路由更容易表达。