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

content.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)

それでも問題が解決しない場合は、パーシャルがどのようにレンダリングされているか、および「blog」というローカル変数を提供しているかどうかを確認してください。

于 2012-04-19T01:15:38.817 に答える