Ruby on rails Rails单一资源未按预期工作
根据Ruby on rails Rails单一资源未按预期工作,ruby-on-rails,Ruby On Rails,根据http://guides.rubyonrails.org/我通过这个命令创建了postrailsgscaffoldpost-singular但是它创建了多个资源post。所以我把它改成了 get 'post', to: 'posts#show' resource :post 根据指南,这应该显示帖子,但实际上它给出了一个错误,即在没有ID的情况下找不到帖子 它还说我可以使用同一个控制器来处理单数路由(/post)和复数路由(/posts/45),我如何才能做到这一点?当访问指向
http://guides.rubyonrails.org/
我通过这个命令创建了postrailsgscaffoldpost-singular
但是它创建了多个资源post。所以我把它改成了
get 'post', to: 'posts#show'
resource :post
根据指南,这应该显示帖子,但实际上它给出了一个错误,即在没有ID的情况下找不到帖子
它还说我可以使用同一个控制器来处理单数路由(/post)和复数路由(/posts/45),我如何才能做到这一点?当访问指向显示的单数路由时,您没有提供ID,因此post.find(params[:ID])
将不起作用,并将给您一个错误“没有ID无法找到post”。由于没有为您提供ID参数,您需要对ID进行硬编码,例如Post.find(1)
,或者执行类似current\u user.Post的操作,假设您有一个用户拥有一个Post或属于某个Post
如果要同时使用单数路由“/post”和复数路由“/posts/45”,则需要在show action中说明这两种情况,因为两个路由都指向同一个操作。您的表演动作如下所示:
#app/controllers/posts_controller.rb
def show
@post = params[:id] ? Post.find(params[:id]) : Post.find(45)
end
除非你真的必须这样做,否则不要打破惯例。它最终会咬你的。