Rails - 从类中显示字段时出错

时间:2016-08-25 18:38:20

标签: ruby-on-rails ruby activerecord view controller

我想带来所有资源,然后显示来自'curso'的'nombre'字段。一个curso有很多资源。(我已经完成了所有has_many和belongs_to配置。)

为此我做了以下事情: resources_controller:

 def index
     @resources = Resource.all 
end

的index.html:

    <% @resources.each do |resource| %>
  <tr>
        <td><%= resource.title %></td>
        **<td><%= resource.curso.nombre %></td>**
        <td><%= resource.cantidad %></td>
        <td><%= link_to 'Show   ', resource %></td>
    <% else %>

    <% end %>

但是当我测试它时,它会给我以下错误:“未定义的方法`nombre'为nil:NilClass”

你知道它能成为什么吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

这表示此特定<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000"/> </bean> 与您的任何resource无关。

如果您想要强制每个curso在创建时resourcecurso相关联,那么您应该在Resource模型中使用此class Resource < ActiveRecord::Base belongs_to :curso # Validate the presence of curso in every resource. validates :curso, presence: true end class Curso < ActiveRecord::Base # When any curso is destroyed, all it's associated resources should be gone. has_many :resources, dependent: :destroy end

curso_id

仅在上述情况下,您可以确保资源在创建过程中始终具有curso。

此外,您可以在resources表的{{1}}字段上具有数据库级 not null 约束。

答案 1 :(得分:0)

好像有些resources don t have a curso`。

在调用curso之前,只需检查nombre是否存在:

<%= resource.curso.nombre if resource.curso %>

<%= resource.curso && resource.curso.nombre %>

<%= resource.curso.try(:nombre) %>