Force Rails路径

问题描述:

我是Rails的新手,我正在尝试创建一个Redmine插件。Force Rails路径

我希望我的“秀”路径去/projects/:project_id/summary,因为正常的“显示”路径,/projects/:project_id/已被应用程序占用。

我我的路线设置为:

get 'projects/:project_id/summary/', to: 'summaries#show', as: 'project_summary' 

我测试的路线,和它的作品。然而,我所有的写作link_to的尝试都失败了。我只能把它链接到project/:project_id。我不知道如何处理“总结”的道路。有没有办法?我知道这条路线有点偏离轨道,可能只是不被允许。我的所有其他途径都批准了Rails的,所以我希望我可以通融这一次......

让我们说你有ID 8项目,你的link_to是:

@project = Project.find(8) 
link_to "the project", project_summary_path(@project) 

此外,我假设这里的模型是project而不是summary。如果有概要模型,则需要告诉我们模型中的项目和摘要如何关联。如果有belongs_to的项目汇总的模式,你需要将路线调整为:

get 'projects/:project_id/summaries/:summary_id', to: 'summaries#show', as: 'project_summary' 

,然后你的link_to是这样的:

@project = Project.find(8) 
@summary = Summary.find(10) #assuming the id of the summary is 10 
link_to "the project", project_summary_path(@project, @summary) 
+0

请参阅更新的答案。 – Philip7899

+0

我有一个属于项目的摘要模型。 我想要做的是在左侧的数据库列表中的所有项目的列表。指向'/ summaries'的初始化文件 这是我希望指向'/ projects /:project_id/summary'信息的帮助程序代码,用于将项目列表保留在左侧。 'def render_project_hierarchy(projects) render_project_nested_lists(projects)do | project | link_to_project(project,{},action:“show”,id:@project_id,:class =>“#{project.css_classes}#{User.current.member_of?(project)?'my-project':nil }“)' –

+0

发表另外一个问题,我很乐意回答,但我相信我的帖子会回答你最初的问题。如果这是真的,请标记为正确。 – Philip7899

这只是正常原样。与路线有一点需要注意,如果你想这条道路使用,而不是默认轨道,只需在路由文件中首先列出它:

get 'projects/:project_id/summary/', to: 'summaries#show', as: 'project_summary' 
resources :projects 
resources :summaries 

如果您运行rake routes,这个输出看起来像:

project_summary GET /projects/:project_id/summary(.:format) summaries#show 
      projects GET /projects(.:format)      projects#index 
        POST /projects(.:format)      projects#create 
     new_project GET /projects/new(.:format)     projects#new 
     edit_project GET /projects/:id/edit(.:format)   projects#edit 
      project GET /projects/:id(.:format)     projects#show 

如果您访问/ projects/1或/ projects/1/summary,则应该看到相同的视图。

的的link_to仅仅是你给它的别名:

<%= link_to 'show', project_summary_path(@project_instance_id) %> 

然而,默认的Rails的link_to(在这个例子中)是:

<%= link_to 'show', project_path(@project_instance_id) %>