You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:45:43