0

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

我还有一个与管理文件夹分开的挑战控制器。该控制器具有整个 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
4

1 回答 1

0

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

当您复制并尝试在管理视图中重复使用相同的链接时,我希望该链接@subject未分配,因此无法找到所需的subject_id. 为您的管理部分视图提供主题,它应该可以工作!

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

于 2018-12-04T01:16:05.590 回答