为什么它告诉我方法内容未定义?

时间:2012-05-17 21:01:01

标签: ruby-on-rails

我正在尝试向此应用添加消息回复:https://github.com/railstutorial/sample_app_2nd_ed

但是我不断收到错误:未定义的方法`content'为下面的部分(第17行)。

<li>
  <span class="content"><%= micropost.content %></span>

  <span class="timestamp">
    Posted <%= time_ago_in_words(micropost.created_at) %> ago.
  </span>
  <% if current_user?(micropost.user) %>
    <%= link_to "delete", micropost, method:  :delete,
                                     confirm: "You sure?",
                                     title:   micropost.content %>
  <% end %>

  <span>
  <h>Comments</h>
  <% @micropost.comments.each do |c| %>
    <p>
      <%=h c.content %>
    </p>
  <% end %>
  </span>

  <span>
  <%= form_for(@comment) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :content, :cols => "20", :rows => "2", placeholder: "Compose new comment..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
  <% end %>
  </span>
</li>

这没有任何意义,因为例如第2行没有问题,我没有在我的微控制器控制器或其他任何地方明确定义方法内容。我应该在哪里定义内容,我该怎么做?

这是我的评论模型的代码

class Comment < ActiveRecord::Base
  attr_accessible :content
  belongs_to :micropost

  validates :content, presence: true, length: { maximum: 140 }

  validates :micropost_id, presence: true

  default_scope order: 'comments.created_at DESC'
end

1 个答案:

答案 0 :(得分:0)

它试图在评论中调用content,因此评论模型需要有content实例方法。

第2行正在调用@micropost上的方法,该方法看起来是另一个类的实例。