Rails奇异资源未按预期工作

时间:2013-12-22 10:14:01

标签: ruby-on-rails

根据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),我该怎么做?

1 个答案:

答案 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