form_for具有更改名称的嵌套资源

时间:2015-06-07 23:17:40

标签: ruby-on-rails form-for

我有两种模式:

class Project < ActiveRecord::Base
  has_many :stories, class_name: 'ProjectStory'
end

class ProjectStory
  belongs_to :project
end

使用以下路线:

resources :projects do
  resources :stories
end

所有控制器都已正确设置。现在,我有一个stories/_form部分(可以重新用于new和edit),其中包含以下行:

= form_for [@story.project, @story] do

问题是,@story.model_name.singular_route_name返回project_story,因此它正在尝试执行project_project_name_path来计算表单网址。这显然是在提高no method error

我可以使用url选项覆盖它,但是我需要使用三元运算符来处理editnew个案:

= form_for @story, url: @story.new_record? ? project_stories_path(@story.project) : project_story_path(@story.project, @story)

有没有办法让rails知道它应该为嵌套路由的单个元素使用不同的名称?我宁愿不重命名我的模型或控制器(以避免像edit_project_project_story_path那样恼人的网址助手)

0 个答案:

没有答案
相关问题