能否为Rails中Students的集合路由information生成polymorphic_url?
问题描述
- 我的应用中有这样的URL:
/students/information?name='john' - Student是模型,information并非模型
- 路由配置如下:
resources :students do get :information, on: :collection end - 想知道是否可以用
polymorphic_url生成该URL?目前在Student的index页面中,我用如下写法生成分页链接:<%= polymorphic_url( Student, name: params[:name] ) %>
解决方案
可以用polymorphic_url生成这个URL,只需要调整参数形式,把动作名称和模型放在数组里作为第一个参数,让Rails识别到这是Student集合的information动作。
修改后的代码如下:
<%= polymorphic_url( [:information, Student], name: params[:name] ) %>
原理很简单:当你给polymorphic_url传入数组[:information, Student]时,Rails会匹配你配置的集合路由,生成对应的URL /students/information?name='john'。
如果只需要生成相对路径(不需要完整域名),换成polymorphic_path就行,写法和上面完全一致。
另外你也可以直接用路由自动生成的辅助方法information_students_url,写法是information_students_url(name: params[:name]),但如果是需要适配多态场景(比如后续可能切换模型),用polymorphic_url的写法会更灵活。
内容的提问来源于stack exchange,提问作者ddzxc
相关产品推荐
相关产品推荐

