2013-12-13 24 views
0

嗨,我已经做了posts_controller,模型和视图,工作非常好。即时通讯使用设计。打印@class在不同的视图Rails

我需要在设计> sesion>新视图上回显“最新”帖子,我该怎么做?

对不起IM学习Rails的,我无法找到的信息,也许是因为我不知道如果@posts是一个类的方法,或者,我打印鉴于职位是根据本教程

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

方式

我做的是

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

这导致这个错误的色器件>使sesion>新视图。

未定义的方法`每个”近亲:NilClass

有人可以解释我而言,我的学习,我想understang,谢谢!我会很感激。 :d,

在色器件控制器,其中高清新是我插入这一点,但仍然没有工作

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) 

为什么仍然抛出了同样的错误。

+0

在控制器>设计>会话存在session_controller至极的正常使用。我只需要在新的设计会议中打印帖子。 ....在控制器的顶部,这是自动生成的是类Devise :: SessionsController

+0

答案更新。请注意操作的顺序。 @posts分配必须发生在'respond_with' –

回答

1

@posts是一个类实例变量。

以您试图使用它的方式,@posts会在控制器中设置,然后在视图中使用。

就你而言,你应该在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 
+0

看到我的编辑之前,我现在编辑 –

+0

非常感谢! –

+0

嘿,我还有一个问题,每篇文章的链接将转到domain.com/admin/posts这是管理员的URL,用户的url是domain.com/posts我如何设置此或路径中的位置。我猜。怎么样?你能为我指出正确的方向吗? –