2012-04-19 97 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) 

如果不解決這個問題,看看被是如何在局部呈現以及它是否提供稱爲局部變量「博客」。

相關問題