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

时间:2013-09-10 02:32:41

标签: ruby-on-rails ruby

我有两个脚手架

  • 用户
  • 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

中这样做了
        <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

我不知道该怎么做。

2 个答案:

答案 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中调试 此外,错误将告诉您抛出它的确切行。您应该查看这些信息,并在发布此类问题时分享。