所以在你说之前,我已经阅读了这个http://guides.rubyonrails.org/routing.html,而且我也在使用Rails 3.2.13
我已将路由文件中的wiki定义为资源,因此应该获取生成的路由功能,例如wiki_path()等。我在上面的文章中读到,如果定义了路由功能,并且传入了一个对象,如果它响应所有ActiveRecord类所做的id方法,它可以找出id。
这是我的问题,我的Wiki类没有从ActiveRecord继承,虽然我已经定义了如下的id函数,但路由器仍然将整个wiki对象作为id参数传递。
def id
url_id = wiki.slug
url_id ||= wiki.title
url_id
end
当我尝试创建一个新的wiki时,我得到的错误是:
在/ wiki / what-is-the-of-life> 的ActionController :: RoutingError
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"}>}
我希望:id是Wiki类中id函数的返回值。
答案 0 :(得分:2)
您需要to_param
方法,而不是id
:
def to_param
wiki.slug || wiki.title
end