0

我有两个脚手架

  • 用户
  • 用户手册

我想在文件中显示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

        <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

我不知道该怎么办。

4

2 回答 2

0

我有根据的猜测是,您的 userlayout 是由未设置的控制器方法调用的@userscuentas,因此在第 1 行中,userscuentas/index.html.erb您得到了一个NoMethodErrorin,<% @userscuentas.each do |userscuenta| %>因为它为空。

将 a 添加before_filter到 user_controller,并在过滤器的方法 set@userscuentas中。


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

于 2013-11-08T19:22:31.440 回答
0

您的 userscuentas 控制器中的这一行

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

努力做到

  def index
        @userscuentas = Userscuenta.all
    end
于 2013-09-10T03:09:24.113 回答