我的routes.rb
中有以下内容map.resources :novels do |novel|
novel.resources :chapters
end
通过上面定义的路线,我可以使用xxxxx.com/novels/:id/chapters/:id
访问章节。
但这不是我想要的,章节模型有另一个叫做数字的字段(对应章节编号)。我想通过URL来访问每一章
xxxx.com/novels/:novel_id/chapters/:chapter_number
。如何在不明确定义命名路由的情况下完成此操作?
现在我正在通过使用以下命名路径定义ABOVE map.resources:novels
map.chapter_no 'novels/:novel_id/chapters/:chapter_no', :controller => 'chapters', :action => 'show'
感谢。
答案 0 :(得分:6)
:id
几乎可以是你想要的任何东西。因此,保持路由配置不变,并从
class ChaptersControllers
def show
@chapter = Chapter.find(params[:id])
end
end
to(假设您要搜索的字段称为:chapter_no
)
class ChaptersControllers
def show
@chapter = Chapter.find_by_chapter_no!(params[:id])
end
end
另请注意:
find_by_chapter_no!
而不是find_by_chapter_no
)来模拟默认的find
行为