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

Rspec测试带作用域路由的Rails表单视图时遇路由错误

问题解决:Rspec视图测试中form_for路由错误

问题根源

你的路由定义在:fiscal_year作用域下,所有organization相关路由都必须携带该参数才能生成正确路径。但测试中的form_for仅传入organization对象,Rails无法自动获取fiscal_year参数,导致路由生成失败。

解决方案

1. 修改_form.html.haml中的form_for调用

将单独的organization对象改为包含fiscal_year和organization的数组,让Rails生成带作用域的正确路由:

= form_for [@fiscal_year, organization] do |f|
  ...

修改后Rails会自动生成符合作用域规则的路径(例如/2024/organizations/1/edit)。

2. 修正测试中的断言路径

测试里的organization_path同样需要传入fiscal_year参数,否则断言的路径会与实际生成路径不匹配:

assert_select 'form[action=?][method=?]', organization_path(@fiscal_year, organization),
              'post' do
  assert_select 'input[name=?]', 'organization[name]'
end

补充说明

实际运行时视图正常,是因为控制器中通过before_action等逻辑设置了@fiscal_year实例变量,而测试中虽用assign设置了该变量,但原form_for未使用该参数,导致路由生成逻辑出错。调整form_for参数后,测试逻辑与实际运行逻辑保持一致,即可通过测试。

内容的提问来源于stack exchange,提问作者OnyxRDragon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:12:30