生成的脚手架的视图链接与路线图不正确对应

时间:2013-04-13 21:13:51

标签: ruby-on-rails ruby-on-rails-3 rails-routing

生成的视图路径存在问题。我的routes.rb看起来像是

Project::Application.routes.draw do
  resources :project_templates do
    resources :awards
  end
...
像这样的

project_template.rb

class ProjectTemplate < ActiveRecord::Base

  belongs_to :user
  has_many :awards #...

  attr_accessible :user_id #...

  ...

award.rb喜欢

class Award < ActiveRecord::Base
  belongs_to :project_template
  attr_accessible :tier #..
  ...

生成的视图链接如下所示:awards_path 这种方式应用不起作用,我需要用project_template_awards_path

替换所有

我不知道为什么生成器在没有project_template前缀的情况下这样做了,但是我请你帮我找到解决这个问题的方法。也许有一些生成器命令会将缺少的后缀添加到路径中?我必须对另一个班级requirement.rb做同样的事情并且也有相同的观点,所以我希望有一些神奇的命令来解决我的问题。


rake routes | grep awards给出以下输出:

project_template_awards     GET     /project_templates/:project_template_id/awards(.:format)          awards#index
                            POST    /project_templates/:project_template_id/awards(.:format)          awards#create
new_project_template_award  GET     /project_templates/:project_template_id/awards/new(.:format)      awards#new
edit_project_template_award GET     /project_templates/:project_template_id/awards/:id/edit(.:format) awards#edit
project_template_award      GET     /project_templates/:project_template_id/awards/:id(.:format)      awards#show
                            PUT     /project_templates/:project_template_id/awards/:id(.:format)      awards#update
                            DELETE  /project_templates/:project_template_id/awards/:id(.:format)      awards#destroy

2 个答案:

答案 0 :(得分:0)

您可以尝试在项目目录中键入$ rake routes并在那里发布输出吗?它是否仍然显示奖项资源的awards_path?

PS。控制器在这里无关,因为你可以在app /.// p>中创建没有相应控制器的路由资源

答案 1 :(得分:0)

生成的路线是正确的。如果您想拥有此帮助程序,可以将其添加到route.rb

Project::Application.routes.draw do
  resources :project_templates
  resources :awards
end

或实施像

这样的帮手
def awards_path(award)
  project_template_awards(awards.project_template, awards)
end

有关ruby guides

的更多信息