在不同的视图Rails中打印@class

时间:2013-12-13 08:02:35

标签: ruby-on-rails ruby ruby-on-rails-3 devise

您好我已经制作了一个posts_controller,模型和视图,工作得非常好。我正在使用设计。

我需要回应设计> sesion>新视图中的“最新”帖子,我该怎么做?

抱歉我学习Rails,我无法找到信息,也许是因为我不知道@posts是一个类,还是一种方法,我在视图中打印帖子的方式是基于本教程

http://guides.rubyonrails.org/getting_started.html

我做的是

<% @posts.each do |post| %>
    <tr>
      <td><%= post.title %></td>
      <td><%= post.text %></td>
    </tr>
  <% end %>

这导致设计上的此错误&gt; sesion&gt;新观点。

未定义的方法`each'代表nil:NilClass

有人可以解释我,我正在学习,我想要解释,谢谢!,我将非常感激。 :d,

在设计控制器中,def new是我插入但仍无法正常工作

 def new
    self.resource = build_resource(nil, :unsafe => true)
    clean_up_passwords(resource)
    respond_with(resource, serialize_options(resource))

    @posts = Post.all(:order => 'created_at DESC', :limit => 20)
  end

我刚刚添加了

@posts = Post.all(:order => 'created_at DESC', :limit => 20)

为什么仍然会抛出相同的错误。

1 个答案:

答案 0 :(得分:1)

@posts是一个类实例变量。

在您尝试使用它的方式中,@ post将在控制器中设置,然后在视图中使用。

在你的情况下,你应该在Devise :: SessionsController中设置@posts变量。

默认情况下,控制器位于gem中,但您可以选择将其安装到应用程序中,以便自定义它。

这个answer解释了如何创建自定义SessionsController

已编辑:您的new类似于:

def new
  @posts = Post.all(:order => 'created_at DESC', :limit => 20)

  self.resource = build_resource(nil, :unsafe => true)
  clean_up_passwords(resource)
  respond_with(resource, serialize_options(resource))
end