2012-04-19 100 views
1

我正在一个Rails应用程序,我有一个仪表板::用户(仪表板/用户)控制器,我希望用户通过该网站的后端更新他们的博客文章。这工作正常,但是当我试图获取用户创建的最新博客帖子的列表时,我收到一条错误消息。未定义的局部变量或方法`博客'?

仪表板/ users_controller

def content 
    @blog = Blog.new 
    render ('content') 
end 

仪表板/博客/ _blog_list.html.erb

<%= div_for(:dashboard ,blog) do %> 
    <%= link_to image_tag(blog.preview.url(:thumb)), dashboard_blog_path(blog) %> 
    <h1><%= link_to (blog.title),dashboard_blog_path(blog) %></h1> 
    <p><%= truncate blog.excerpt, length: 160 %></p> 
    <%= blog.published_at %> 
    <%= blog.site_id %> 
<% end %> 

控制器

def content 
    @site = Site.find_by_subdomain!(request.subdomain) 
    @blogs = @site.blogs.all 
    @blog = Blog.new 

    render ('content') 
end 

content.html.erb

<%= render :partial => 'dashboard/blogs/blog_list', :locals => {:blogs => @blog} %> 

为什么这不起作用的原因?

回答

4

我最好的猜测是本地变量blog从未设置。 @blog将在部分可用,但blog将只可如果它被明确设置,例如,如果该部分通过

render :partial => "blogs/blog_list", :locals => {:blog => @blog} 

呈现有关的谐音更多详情,请参阅http://apidock.com/rails/ActionView/Partials

+0

如果博客位于仪表板文件夹内,这也起作用吗? Rails向我抛出同样的错误。 – coletrain 2012-04-19 01:28:26

+0

你可以粘贴渲染这个部分的线吗?另外,你是否用'@ blog'替换了所有'blog'? – 2012-04-19 01:57:19

+0

我已经更新了我的代码 – coletrain 2012-04-19 02:13:45

0

div_for(:dashboard ,blog) 

是“:仪表盘”应该是你的div标签的ID属性值的前缀?那就是,你想得到这样的东西?

<div id='dashboard_blog_123'>...</div> 

你有这个错误的方法。尝试

div_for(blog, :dashboard) 

如果不解决这个问题,看看被是如何在局部呈现以及它是否提供称为局部变量“博客”。

相关问题