根据http://guides.rubyonrails.org/
的单一资源,我通过此命令rails g scaffold post -singular
创建了帖子,但它创建了多个资源帖子。所以我把它改成了
get 'post', to: 'posts#show'
resource :post
根据指南,这应该显示帖子,但实际上它给出了Couldn't find Post without an ID
另外它说我可以使用相同的控制器进行单一路径(/ post)和复数路径(/ posts / 45),我该怎么做?
答案 0 :(得分:2)
在访问指向展示的单一路线时,系统不会向您提供身份证明,因此Post.find(params[:id])
无法正常工作,并且会向您发出错误消息“无法找到帖子一个ID'。由于您未获得ID参数,因此您需要对Post.find(1)
之类的ID进行硬编码,或者执行current_user.post
之类的操作,假设您的用户具有has_one post或belongs_to post。
如果您想同时使用单一路线' / post'和复数路线' / posts / 45',然后你需要在你的节目动作中考虑这两种情况,因为两条路线都指向同一个动作。您的节目动作将如下所示:
#app/controllers/posts_controller.rb
def show
@post = params[:id] ? Post.find(params[:id]) : Post.find(45)
end