这是在我的routes.rb文件中:
resources :users, :only => [:create] do
get 'search'
member do
get 'images'
get 'followers'
get 'following'
post 'follow'
delete 'follow'
end
end
但我也希望有人能够调用/ self / feed和/ self / comments(其中comment是一种资源)以及self引用会话中的id。我怎么能不重复自己呢?
由于
答案 0 :(得分:0)
如果id已经在会话中,那么您不需要将其作为URL参数传递。考虑传递会话ID的危险:如果传递了不是会话ID 的id 会发生什么?你会怎么处理?
对于你的评论路线,你应该考虑这样的事情:
# config/routes.rb
resources :comments
然后,在评论控制器中,您将查询id为session的所有评论:
# app/controllers/comments_controller.rb
def index
@comments = User.find(session[:id]).comments // assuming that the session `id` variable is the identifier for a `User` model
end
因此,您只需访问/comments
路径,即可访问会话的所有注释。
编辑:
要通过别名路径/self/comments
访问会话的用户评论,您可以创建一个命名匹配路由:
# config/routes.rb
match 'self/comments' => 'user#self_comments'
然后,您需要为comments_controller.rb
self_comments
添加操作。您可以重复使用您的评论index.html.erb
模板来渲染结果:
# app/controllers/comments_controller.rb
def self_comments
@comments = User.find(session[:id]).comments
render :template => 'comments/index'
end