我的路线设置如下:
resources :projects do
resources :project_factors, as: factors
end
我喜欢拥有as: :factors
所以路线变为:
project_factor_path(@project, @project_factor)
而不是
project_project_factor_path(@project, @project_factor)
但是我无法让form_for
生成正确的路线。
form_for [@project, @project_factor]
失败(正如预期的那样),因为它尝试使用project_project_factor_path
,所以我尝试了:
form_for [@project, @project_factor], as: :factor
但是失败并出现完全相同的错误。
有没有办法让rails生成正确的路径,而无需为创建和更新案例明确设置正确的url
参数?
答案 0 :(得分:0)
不理想,但您可以将路径分别传递给对象,例如:
form_for [@project, @project_factor], :url => project_factor_path(@project, @project_factor)
(注:未经测试)
虽然感觉有点多余......这正是你想要减少的,所以对你来说可能不是一个好的解决方案:P
另一种方法可能是将project_factor
模型重命名为factor
。您仍然可以将数据库表名称指定为project_factors
(在类中使用self.table_name = 'project_factors'
以便Rails找到它。)
对我而言,project/project_factors
感觉有点像smurf-typing ......;)
YMMV