Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用designe添加管理功能后更改路由_Ruby On Rails_Ruby_Devise_Que - Fatal编程技术网

Ruby on rails 使用designe添加管理功能后更改路由

Ruby on rails 使用designe添加管理功能后更改路由,ruby-on-rails,ruby,devise,que,Ruby On Rails,Ruby,Devise,Que,这个问题会有点复杂,因为我对RoR还不熟悉,但却被扔进了一个相对较大的RoR项目中。对此,我道歉,但我会尽力澄清。首先,我很乐意承认,我们可能犯了可怕的错误 总之,情况是这样的: 我们最初试图恢复一些由专业公司构建的遗留代码,但最终没有成功 正因为如此,我们重新开始了一个新项目,并使用脚手架来构建我们项目的结构 我们使用了大量来自遗留项目的代码,但最终添加的代码比实际使用的要多得多。现在我们不确定什么是需要的,什么不是 长话短说,我们有一个正在工作的项目,但最近尝试使用Desive按用户和管理

这个问题会有点复杂,因为我对RoR还不熟悉,但却被扔进了一个相对较大的RoR项目中。对此,我道歉,但我会尽力澄清。首先,我很乐意承认,我们可能犯了可怕的错误

总之,情况是这样的:

  • 我们最初试图恢复一些由专业公司构建的遗留代码,但最终没有成功

  • 正因为如此,我们重新开始了一个新项目,并使用脚手架来构建我们项目的结构

  • 我们使用了大量来自遗留项目的代码,但最终添加的代码比实际使用的要多得多。现在我们不确定什么是需要的,什么不是

  • 长话短说,我们有一个正在工作的项目,但最近尝试使用Desive按用户和管理员分离我们的功能(我不确定具体到什么程度)。在这样做时,我们将管理控制器和视图分离到一个管理子文件夹中,这样我们就有了“/controllers/admin/events”和“/controllers/events”,视图也是如此。这样我们就可以为管理员和用户提供一个单独的视图(同样,可以肯定这不是正确的方法)

我几乎可以肯定,我们这样做是错误的,但这最终让我想到了这个问题:

我们更改了routes.rb,将我们的资源包含在管理员命名空间下,如下所示:

namespace :admin do
    resources :form_defs do
        resources :questions
    end
end
但当我尝试像我们最初做的那样“链接到@form_defs”时,它仍然尝试路由到form_defs_questions_path,而不是admin_form_defs_questions_path

我想我的问题很简单,我该如何更改类,使其正确路由

如果有更好的方法,我们应该做到这一点,不涉及基本上重新开始项目,我洗耳恭听

我想我需要更改对象默认路由到的位置:

我遇到问题的代码是一个创建新问题的表单生成器。这是我们用于此目的的代码:


添加问题


“小灰色按钮”,:id=>“添加问题按钮”%>

您可以编写完整的路由器
管理表单定义问题路径(@form\u defs)
或者您可以定义命名空间
链接到[:admin,@form\u defs]
在类似的项目中工作过。我们以同样的方式处理管理/用户界面

您需要开始做的是停止依赖rails为您猜测事情,并手动指定它们

比如说

<%= render  @form_defs %>
<%= link_to @form_defs %>

会变成这样:

<%= render partial: 'admin/form_defs/questions', locals: {form_defs: @form_defs} %>
<%= link_to admin_form_defs_questions_path(@form_defs) %>


这使您能够很好地控制用户可以看到/做的内容和管理员可以看到/做的内容之间的划分。我只是认为像这样的硬编码通常被认为是不好的做法,所以我们试图避免它。“呈现局部性”和“局部性”到底是做什么的?另外,我在我的帖子中补充了一些更多的说明,因为我的问题并不完全与link_相关,而是与object和formbuilder相关。我尝试过,但不幸的是,在我的具体案例中,这并不完全有效。我在我的帖子中添加了更多的说明,因为我的问题不一定与“link_to”相关(我应该更好地解释),但它似乎以某种方式与路由/路径相关。抱歉搞混了!