您好我已经制作了一个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)
为什么仍然会抛出相同的错误。
答案 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