我是一个Ruby-on-Rails的新手,刚开始。
我有一个名为“account_types”的MVC,通过scaffold生成:
转到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(这是基于SO上其他问题中给出的示例):
<%= render :partial => 'account_types/list', :module_types => @module_types %>
但是我得到了
未定义的方法`each'代表nil:NilClass
并且错误显示了我写过的account_types / _list.html.erb中的代码
<% @account_types.each do |account| %>
脚手架的看法很好,为什么不是我的?
在这里使用偏好是正确的吗?
提前致谢。
答案 0 :(得分:1)
What is the correct way to define an application-wide partial and its variables in rails说要在before_filter
上使用ApplicationController
。
答案 1 :(得分:0)
您将:module_types
传递给部分,但使用account_types
。我可以看到你只需要将index.html.erb更改为:
<%= render :partial => 'account_types/list', :account_types => @module_types %>
答案 2 :(得分:0)
如果你愿意,可以使用partials,尽管在这种情况下根据我的判断它们是不必要的(它们用于在几个视图之间共享代码块)。为了使此代码有效,您需要在控制器中使用类似
的内容定义@account_types
@account_types = AccountType.all
您可以在account_types_controller.rb
行动index
下看到确切的行。此处不需要:module_types => @module_types
,因为我怀疑您定义@module_types
和,根本不在您的部分中使用module_types
。
很明显,你不明白Rails是如何工作的,所以我建议你在阅读一些好的教程(比如this one)之前先阅读一下你的想法。