0

我是一个 Ruby-on-Rails 新手,刚刚开始。

我有一个名为“account_types”的 MVC,通过脚手架生成:

  • 控制器/account_types_controller.rb
  • 助手/account_types_helper.rb
  • 模型/account_type.rb
  • 视图/account_types/_form、编辑、索引等...

转到 localhost:3000/account_types 会给我索引视图。

我想做的是将与从应用程序索引页面中的 account_types 索引方法中选择的数据相同的数据显示为列表。

我编写了一个名为 account_types/_list.html_erb 的新视图,如下所示:

<ul>
<% @account_types.each do |account| %>
    <li><% account.label %></li>
<% end %>
</ul>

然后我编辑了 home/index.html.erb (这是基于其他问题中给出的示例):

<%= render :partial => 'account_types/list', :module_types => @module_types %>

但是我得到

nil:NilClass 的未定义方法“每个”

并且错误显示来自我编写的 account_types/_list.html.erb 的代码

<% @account_types.each do |account| %>

脚手架视图工作正常,为什么不是我的?

部分在这里使用正确吗?

提前致谢。

4

3 回答 3

1

在 rails 中定义应用程序范围的部分及其变量的正确方法是使用 a before_filteron ApplicationController

于 2012-05-03T21:57:11.810 回答
0

如果需要,您可以为此使用部分,但据我所知,在这种情况下它是不必要的(它们用于在多个视图之间共享代码块)。为了使此代码正常工作,您需要@account_types在控制器中定义类似

@account_types = AccountType.all

您可以在您account_types_controller.rbindex行动中看到确切的路线。:module_types => @module_types在这里没有必要,因为我怀疑你定义@module_types了任何一个并且你根本没有module_types在你的部分中使用。

很明显,您不了解 Rails 的工作原理,因此我建议您先阅读一篇好的教程(例如这个),然后再继续您的想法。

于 2012-04-30T12:35:14.147 回答
0

您传递:module_types给部分,但使用account_types. 如我所见,您只需将 index.html.erb 更改为:

<%= render :partial => 'account_types/list', :account_types => @module_types %>
于 2012-04-30T12:19:41.610 回答