我正在开发一个rails应用程序,我有一个Dashboard :: user(仪表板/用户)控制器,我希望用户通过该站点的后端更新他们的博客文章。这工作正常,但当我试图获取用户创建的最新博客文章的列表时,我收到错误。
仪表板/ 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} %>
为什么这不起作用?
答案 0 :(得分:4)
我最好的猜测是从未设置局部变量blog
。 @blog
将在部分中可用,但blog
仅在显式设置时才可用,例如,如果部分通过
render :partial => "blogs/blog_list", :locals => {:blog => @blog}
有关部分内容的更多详细信息,请参阅http://apidock.com/rails/ActionView/Partials。
答案 1 :(得分:0)
你有
div_for(:dashboard ,blog)
':'dashboard'应该是div标签的id属性值的前缀吗?也就是说,你想得到这样的东西吗?
<div id='dashboard_blog_123'>...</div>
你有这个错误的方法。尝试
div_for(blog, :dashboard)
如果这不能解决问题,请查看部分呈现方式以及是否提供名为“blog”的局部变量。