【发布时间】:2014-08-04 15:21:27
【问题描述】:
我刚刚安装了 gem 'mongoid_slug',这是模型:
class Book
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Slug
field :_id, type: String, slug_id_strategy: lambda {|id| id.start_with?('....')}
field :name, type: String
slug :name,
...
end
在控制器中,我有一个函数调用 get_book,我在编辑、显示等之前调用它
当然不行,我也试过 find_by_slug。
属性为 {:id=>"try-new-book"} 的类 Book 出现错误 Document not found。
请求信息
请求参数{"action"=>"show", "controller"=>"startups", "id"=>"try-new-book"}
def get_book
@book = Book.find_by(id: params[:id])
end
谢谢
【问题讨论】:
-
如果
Book.find(params[:id])会怎样?我不清楚这个蛞蝓做什么,但 mongoid 有_id而不是id。所以,它可能是Book.find_by(_id: params[:id])的find_by_id -
蛞蝓制作漂亮的网址而不是 /books/009333 它应该做 /books/try-new-book
-
我尝试使用 Book.find_by_id 但我收到以下错误消息:NoMethodError at /books/try-new-book undefined method `find_by_id' for Book:Class
-
According to docs 它应该只工作
Book.find params[:id] -
当我尝试时:.find_by(_id: params[:id]) 我有以下错误:Mongoid::Errors::DocumentNotFound at /books/try-new-book 问题:找不到文档对于具有属性 {:_id=>"try-new-book"} 的类 Book。摘要:当使用属性哈希调用 Book.find_by 时,提供的所有属性必须与数据库中的文档匹配,否则将引发此错误。
标签: ruby-on-rails ruby ruby-on-rails-4 mongoid slug