【问题标题】:How to use "link_to" in an Admin section correctly in Rails如何在 Rails 的管理部分中正确使用“link_to”
【发布时间】:2018-12-04 00:47:50
【问题描述】:

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

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

【问题讨论】:

  • 看到你的routes.rb会很有帮助
  • 当然,谢谢,我用路线编辑了我的问题
  • 你试过rake routes查看路由列表吗?

标签: ruby-on-rails ruby routing link-to link-to-function


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。你的意思是我在控制器中为它提供了一个我发送到视图的方法?
  • 无论您如何提供它都取决于您,只要确保在您到达您的link_to@subject 具有值。通常在新操作中,您会在控制器中执行类似@subject = Subject.new 的操作,然后在表单中使用模型,然后再将其发回。
  • 太棒了!非常感谢!!
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
相关资源
最近更新 更多