我对RoR很新,我非常感谢任何帮助!
我的'index'文件中有这段代码,但我想把它移到我的'应用程序'文件中,以便它出现在每个页面的导航中:
<ul class="blogs">
<% @blogs.each do |blog| %>
<li>
<%= link_to blog.name, blog.url, { :target => 'main-iframe'} %>
<%= link_to 'Edit', edit_blog_path(blog) %>
</li>
<% end %>
</ul>
<%= link_to 'New Blog', new_blog_path %>
此工作正常并正确显示。然而,链接“编辑”和“新博客”根本不再起作用,它们将我带到下面的错误页面(请注意,链接在索引页面时工作正常):
博客中的NoMethodError #new
未定义的方法`each'代表nil:NilClass
具体问题是这一行:
<% @blogs.each do |blog| %>
网址仍然正确(/ blogs / new),但该行似乎阻止了此页面上的内容。
在我的blogs_controller.rb页面中,我(以及其他一些内容):
def index
@blogs = Blog.all
end
def new
@blog = Blog.new
end
def edit
end
有人可以帮我解决这个问题吗?
由于
答案 0 :(得分:2)
如果您希望它出现在多个页面上,您应该创建一个前过滤器:
before_filter :load_blogs
def load_blogs
@blogs = Blog.all
end
def index
end
一些评论:
.all
可能会使您的应用膨胀答案 1 :(得分:-1)
因为在新动作中@blogs是零。你可以尝试
def new
@blogs = Blog.all
@blog = Blog.new
end