我正在尝试按照http://railscasts.com/episodes/63-model-name-in-url来实现如下所示的 URL:
/dog/<custom field of dog>
代替
/dog/1
其中“1”是 Dogs 表的内部主键。我想要的自定义字段恰好是 Dogs 字段中的另一个整数。
我的代码:
狗控制器.rb:
load_and_authorize_resource :except => [:index]
def show
Rails.logger.info("Hello")
@dog = Dog.find_by_custom_field(params[:id])
end
狗.rb:
def to_param
custom_field
end
特别是,当我尝试加载时/dogs/<custom_field>
,它仍然坚持使用该整数作为主键查找,而不是在自定义字段上查找。所以我得到一个Couldn't find Dog with id=<custom_field>
. 错误
有趣的是,当我尝试这样做时,记录器行也永远不会被打印出来。但是,当我删除load_and_authorize_resource
(CanCan) 行时,它就可以工作了。这里发生了什么?