我創建了一組路徑&控制器與管理命名空間,我有一些問題使用鏈接助手與這些新的路線。rails使用link_to命名空間路由
我看到有一些新的路徑助手,比如admin_projects_path會導致/ admin/projects。然而,我無法連接到命名空間中的這些對象的顯示,編輯,銷燬等路徑。我怎麼做?
我創建了一組路徑&控制器與管理命名空間,我有一些問題使用鏈接助手與這些新的路線。rails使用link_to命名空間路由
我看到有一些新的路徑助手,比如admin_projects_path會導致/ admin/projects。然而,我無法連接到命名空間中的這些對象的顯示,編輯,銷燬等路徑。我怎麼做?
您應該看到rake routes
中列出的所有路由,您可以使用這些名稱來獲取正確的命名空間。如果您手動輸入:controller
和:action
,則使用自動檢測功能將無法正常工作。
如果它在路由中列爲new_thing
,則該方法爲new_thing_path
並帶有適當的參數。例如:
link_to('New Project', new_admin_project_path)
link_to('Projects', admin_projects_path)
link_to(@project.name, admin_project_path(@project))
link_to(@project.name, edit_admin_project_path(@project))
link_to(@project.name, admin_project_path(@project), :method => :delete)
如果您使用的Rails 3,你可以用變量使用管理的命名空間,而不是寫長助手路徑名。
觀點:
<td><%= link_to 'Show', [:admin, project] %></td>
<td><%= link_to 'Edit', [:edit, :admin, project] %></td>
<td><%= link_to 'Destroy', [:admin, project], confirm: 'Are you sure?', method: :delete %></td>
控制器:
redirect_to [:admin, @project]
答案應該明確更新爲這個! – 2013-01-29 00:40:38
對於編輯操作,出於某種原因,我必須執行`<%= link_to'編輯',[:admin,:edit,project]%>`。 – 2014-02-04 14:54:11
一些方法要求:url選項作爲參數,並在這些情況下,你可以使用url_for生成路徑:
icon(:url => url_for(:controller => "admin/projects", :action => "edit", :id => @project),
:type => :edit)
我來這裏問這個確切的問題,這個確切的用例。 +1(我發現隨着時間的推移,更好的答案已經顯現) – Kristian 2013-05-03 13:44:34