如何在/显示不同模型中显示来自不同模型的参数?

时间:2016-05-14 14:13:32

标签: ruby-on-rails migration

使用发票客户端作为模型的rails 4中的应用程序 - 我已经设置了它们之间的关联,如下面两个模型的片段中所示,但无法实现如何在Invoice show视图中显示Client.name。

通过Rails控制台,如果我做了Invoice.last.client.name' - 我可以看到客户端名称 - 但是一旦我尝试用这段代码在视图中显示相同的东西:

  <% @invoices.each do |invoice| %>
    <%= invoice.client.name %>
  <% end %>

我收到此错误未定义方法`name&#39;为零:NilClass

Invoice.rb(Model)

class Invoice < ActiveRecord::Base
  belongs_to :client
  acts_as_schedulable :schedule

  # accepts_nested_attributes_for :clients

end

Client.rb(Model)

class Client < ActiveRecord::Base
  has_many :invoices
  validates_formatting_of :email, using: :email
end

尝试添加嵌套属性并添加&#39;名称&#39;发票控制器中的方法,但不知道我做错了什么。为了更多参考,我在this pastebin link.

中包含了整个发票控制器
  def name
    @invoice = Invoice.client.name
  end

1 个答案:

答案 0 :(得分:0)

可能是您没有客户的发票即时。我首先要在控制台中确认所有发票都有客户,例如

Invoice.all.reject{|invoice| invoice.client}.count

如果答案不为零,那就是你的问题。

您发布的名称方法也不正确,会引发错误。您正在拨打课程方法&#39;客户&#39;在发票课上。