Ruby on rails 使ruby模型与生成的路由一起工作
所以在你说之前,我已经通读了这篇文章,而且我正在使用Rails 3.2.13 我在routes文件中将wiki定义为一个资源,因此应该获得生成的路由函数,如wiki_path()等。我在上面的文章中读到,如果定义了路由函数,并且您传入了一个对象,那么它可以根据id计算出它是否响应了所有ActiveRecord类所使用的id方法 这是我的问题,我的Wiki类不是从ActiveRecord继承的,尽管我定义了下面的id函数,但路由器仍然将整个Wiki对象作为id参数传入Ruby on rails 使ruby模型与生成的路由一起工作,ruby-on-rails,ruby,activerecord,ruby-on-rails-3.2,rails-routing,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 3.2,Rails Routing,所以在你说之前,我已经通读了这篇文章,而且我正在使用Rails 3.2.13 我在routes文件中将wiki定义为一个资源,因此应该获得生成的路由函数,如wiki_path()等。我在上面的文章中读到,如果定义了路由函数,并且您传入了一个对象,那么它可以根据id计算出它是否响应了所有ActiveRecord类所使用的id方法 这是我的问题,我的Wiki类不是从ActiveRecord继承的,尽管我定义了下面的id函数,但路由器仍然将整个Wiki对象作为id参数传入 def id url_
def id
url_id = wiki.slug
url_id ||= wiki.title
url_id
end
我在尝试创建新wiki时遇到的错误如下:
ActionController::RoutingError at/wiki/生命的意义是什么
No route matches {:action=>"show", :controller=>"wiki",
:id=>#<Wiki:0x007f92a6793700 @user=nil, @path_to_repo="wiki.git",
@wiki=#<Gollum::Wiki:70133917472560 wiki.git>, @page=nil, @persisted=false,
@attributes={"title"=>"what-is-the-meaning-of-life"}>}
没有路由匹配{:action=>“show”,:controller=>“wiki”,
:id=>#“生命的意义是什么”}>}
我希望:id是Wiki类中id函数的返回值。您需要
to_param
方法,而不是id
:
def to_param
wiki.slug || wiki.title
end
太棒了+1使用| | op.|使我的方法更优雅)