在循环外可变工作,但不在内部

时间:2016-01-31 17:45:25

标签: ruby-on-rails loops

<% @sbp = Post.limit(4) %>
<div class="menu">
    <% @sbp.each do |sb| %>
        <a class="item" href="/introduction/integrations.html">
            <%= @sb.title %>
        </a>
    <% end %>

我有这个代码,我用Posts的有限查询的基本循环编写。这是我标题中的主要布局文件。 @sbp工作正常,可以在查询内外使用@sbp.first调用,但@sb设置为nill,我收到此错误:

undefined method `title' for nil:NilClass

我的帖子模型:

class Post < ActiveRecord::Base 
    has_many :comments, dependent: :destroy
    validates :title, presence: true, length: { minimum: 5 }
    validates :body, presence: true 
    validates_presence_of :slug

    def to_param
        slug
    end
end

1 个答案:

答案 0 :(得分:0)

您在循环中引用sb作为实例变量,但它不是一个。

使用循环变量:

<% @sbp.each do |sb| %>
    <a class="item" href="/introduction/integrations.html">
        <%= sb.title %>
    </a>
  • @sbp 一个实例变量,可能是在控制器中设置的。
  • each产生的对象不是实例变量。