рендеринг с кемпингом и хамлом - PullRequest
3 голосов
/ 07 января 2011

Я пытаюсь сделать простой блог с кемпингом, как в примере с кемпингом, только я хочу использовать haml для просмотров вместо markaby.Я хочу отображать посты с использованием частичного _post.html.haml, но у меня есть ощущение, что я могу поступить неправильно.

Blog.rb

require 'camping'

Camping.goes :Blog

Blogtitle = "My Blog"

module Blog
  # Path to where you want to store the templates
  set :views, File.dirname(__FILE__) + '/views'
  module Blog::Models
    class Post < Base; belongs_to :user; end
    class Comment < Base; belongs_to :user; end
    class User < Base; end
  end

  module Blog::Controllers
    class Index
      def get
        @posts = Post.find :all
        render :index
      end
    end
  end
end

views /index.html.haml

!!!
%html
%head
%meta{'http-equiv' => 'Content-Type', :content => 'text/html', :charset => 'UTF-8' }/
%title=Blogtitle
%body=render @posts

views / _post.html.haml

%h2=post.title
%p=post.html_body

error

NoMethodError at /
undefined method `to_sym' for #<Array:0xb6e426d4>

Ruby  (eval): in lookup, line 12
Web  GET 0.0.0.0/

Traceback (innermost first)

(eval): in lookup
(eval): in render
/home/tony/src/blog/views/index.html.haml: in evaluate_source
%body=render @posts

1 Ответ

6 голосов
/ 08 января 2011

Прежде всего, для рендеринга частичного вам нужно сделать что-то вроде этого:

render :_post, :locals => { :post => post }

Если вы хотите рендерить все сообщения, просто используйте цикл:

%body
  - @posts.each do |post|
    = render :_post, :locals => { :post => post }
...