【问题标题】:Render or redirect content from different controller?渲染或重定向来自不同控制器的内容?
【发布时间】:2011-12-20 15:34:29
【问题描述】:

我是 Rails 新手,所以这是一个初学者问题。我想为具有来自不同控制器的视图的应用程序创建一个管理页面 我试过了

render 'projects/index'

它会抛出

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

redirect_to 也没有太多运气(没有路由匹配)

这样做的最佳技术是什么?我有一种感觉,它一定非常简单,我错过了一些东西

【问题讨论】:

  • 渲染是正确的方法。我们需要查看堆栈跟踪和查看代码以提供帮助...

标签: ruby-on-rails redirect render


【解决方案1】:

您得到的 nil 错误看起来像是视图的问题。您的视图可能正在使用未在控制器中初始化的数组。每个渲染管理视图的控制器都必须初始化视图中使用的数组。

也就是说,听起来您的视图应该只从一个控制器呈现。

【讨论】:

  • 您的错误显示“评估 nil.each 时发生错误”。这意味着您的视图可能包含如下语句:“@variable.each”,但控制器中未设置 @variable 如果您从视图和控制器中发布代码,我将能够提供更多帮助。
  • 好的,我想出了如何定义数组,但现在它抱怨缺少部分管理员/存根(位于原始项目视图中)。如果我在 admin 文件夹中复制存根,它会抱怨其他 nil 数组。有没有更简单的方法可以在不跨文件夹复制文件的情况下做到这一点?
  • 遵循 Don't Repeat Yourself (en.wikipedia.org/wiki/Don't_repeat_yourself) 的编程原则是个好主意。基本上,出于各种原因,您的应用程序中不应该有重复的代码。对于您的情况,听起来您需要为管理页面创建一个视图。然后,您可以从多个控制器“呈现”该页面。 (guides.rubyonrails.org/layouts_and_rendering.html)
  • 这些是 Rails 和 MVC 编程的重要概念。一个好的 Rails 教程应该可以帮助您深入理解这些概念。这是一个很棒的免费教程:ruby.railstutorial.org.
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2012-02-28
相关资源
最近更新 更多