2017-07-28 84 views
0

我是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的,所以我希望我可以通融這一次......

回答

0

讓我們說你有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

0

這只是正常原樣。與路線有一點需要注意,如果你想這條道路使用,而不是默認軌道,只需在路由文件中首先列出它:

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) %>