1

我正在开发一个 Rails 应用程序,我有一个 Dashboard::user(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

内容.html.erb

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

为什么这不起作用?

4

2 回答 2

4

我最好的猜测是blog从未设置局部变量。@blog将在部分中可用,但blog仅在显式设置时才可用,例如,如果部分是通过

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

有关部分的更多详细信息,请参阅http://apidock.com/rails/ActionView/Partials

于 2012-04-19T01:09:49.817 回答
0

你有

div_for(:dashboard ,blog)

':dashboard' 应该是 div 标签的 id 属性值的前缀吗?也就是说,你想得到这样的东西吗?

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

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

div_for(blog, :dashboard)

如果这不能解决问题,请查看您的部分是如何呈现的,以及它是否提供了一个名为“博客”的局部变量。

于 2012-04-19T01:15:38.817 回答