我有两个脚手架
我想在文件app/views/users/_layout_form.html.erb
中显示文件app/views/userscuentas/index.html.erb
和app/views/userscuentas/new.html.erb
。我在file app/views/users/_layout_users.html.erb
:
<div class="tab-pane" id="tab4">
<p>
<%= render :file => "/userscuentas/index.html.erb" %>
</p>
</div>
当我们通常生成脚手架时,索引文件是默认的,然后这种方式是模型:
应用程序/模型/ user.rb
has_many :userscuentas, :dependent => :destroy
应用程序/模型/ userscuentas.rb
belongs_to :user
和routes.rb是这样的:
resources :users do
resources :userscuentas
end
我收到了这个错误:
NoMethodError at /users/1/edit
undefined method `each' for nil:NilClass
文件控制器userscuentas_controller.rb具有:
@userscuentas = @user.userscuentas.all
我不知道该怎么做。
答案 0 :(得分:0)
你的userscuentas控制器中的这一行
def index
@userscuentas = @user.userscuentas.all
end
尝试制作
def index
@userscuentas = Userscuenta.all
end
答案 1 :(得分:0)
我有根据的猜测是你的userlayout是由未设置@userscuentas
的控制器方法调用的,所以在userscuentas/index.html.erb
的第1行中你得到NoMethodError
<% @userscuentas.each do |userscuenta| %>
因为它是null。
将before_filter
添加到user_controller,并在过滤器的方法集@userscuentas
中添加。
你应该学习如何在rails中调试 此外,错误将告诉您抛出它的确切行。您应该查看这些信息,并在发布此类问题时分享。