在另一个目录中显示部分和索引

我有两个脚手架

  • 用户
  • userscuentas

我想在文件app/views/users/_layout_form.html.erb显示文件app/views/userscuentas/index.html.erbapp/views/userscuentas/new.html.erb 。 我在file app/views/users/_layout_users.html.erb这样做了:

  

"/userscuentas/index.html.erb" %>

通常我们生成脚手架时,索引文件是默认的,那么这种方式是模型:

  • 应用程序/模型/ 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 

我不知道该怎么办。

您的userscuentas控制器中的这一行

  def index @userscuentas = @user.userscuentas.all end 

试着去做

  def index @userscuentas = Userscuenta.all end 

我有根据的猜测是你的userlayout是由一个没有设置@userscuentas的控制器方法@userscuentas ,所以在userscuentas/index.html.erb第1行你会得到一个NoMethodError <% @userscuentas.each do |userscuenta| %> <% @userscuentas.each do |userscuenta| %>因为它为null。

before_filter添加到user_controller,并在filter的方法集中添加@userscuentas


您应该学习如何在rails中进行调试
此外,错误将告诉您抛出它的确切行。 您应该查看这些信息,并在发布此类问题时分享。