根据http://guides.rubyonrails.org/的单个资源,我通过这个命令rails g scaffold post -singular创建了post,但它创建了多个资源帖子。所以我把它改成
get 'post', to: 'posts#show'
resource :post根据指南,这应该会显示帖子,但实际上它给出了错误,说Couldn't find Post without an ID
它还说我可以对单个路由(/post)和多个路由(/posts/45)使用相同的控制器,我如何做到这一点?
发布于 2013-12-22 21:35:53
当访问指向要显示的单一路径时,系统不会向您提供ID,因此Post.find(params[:id])将无法工作,并会给出错误“无法找到没有ID的帖子”。由于没有提供ID参数,因此您需要像Post.find(1)那样硬编码ID,或者假设您有一个用户使用has_one post或belongs_to post,则执行类似current_user.post的操作。
如果您想同时使用单数路由'/post‘和复数路由’/post/45‘,则需要在show操作中考虑这两种情况,因为这两个路由将指向相同的操作。您的show操作将如下所示:
#app/controllers/posts_controller.rb
def show
@post = params[:id] ? Post.find(params[:id]) : Post.find(45)
endhttps://stackoverflow.com/questions/20728304
复制相似问题