如何在 Rails 中正确使用管理部分中的"link_to"



所以我有一个应用程序,它有一个管理部分。管理部分有一个带有索引方法和视图索引的挑战控制器。

我还有一个独立于管理文件夹的挑战控制器。该控制器具有整个CRUD。

每一个挑战都属于一个主题。管理部分中的控制器主题有一个索引方法和视图。不在管理部分的控制器主题具有整个CRUD。

现在,从主题的角度(而不是管理部分(,我可以做一些类似的事情:

<%= link_to "New Challenge".html_safe, new_subject_challenge_path(@subject) %>

我想在管理部分做同样的事情,但我真的不知道怎么做。复制代码会给我带来一个错误:

No route matches {:action=>"new", :controller=>"challenges", :subject_id=>nil} missing required keys: [:subject_id]

但我希望我能在没有额外路线的情况下做到这一点。。。。

这看起来应该很容易,但我真的不知道如何处理。任何帮助都将不胜感激。。。我希望我能很好地解释自己。

管理路由与命名空间一起使用:

namespace :admin do
resources :paths, only: [:index, :new, :create, :update, :edit]
resources :users, only: [:index, :new, :create, :show, :edit, :update] 

结束

resources :challenges, except: [:index, :destroy] do
resources :solutions, only: [:create]
end
resources :subjects

您正在创建的链接指向一个需要主题id的路由。在主题视图中,它可以工作,因为Rails可以在传递给路径助手的@subject中找到subject_id

当您在管理视图中复制并尝试重复使用同一链接时,我预计@subject没有分配,因此它找不到所需的subject_id。提供您的管理部分视图与主题,它应该工作!

此外,如果您想更清楚地了解路由,Rails文档非常棒。

最新更新