首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用露营和haml渲染部分

使用露营和haml渲染部分
EN

Stack Overflow用户
提问于 2011-01-08 04:26:14
回答 1查看 950关注 0票数 3

我正在尝试用camping创建一个简单的博客,就像camping的例子一样,只是我想用haml代替markaby来显示视图。我想使用_post.html.haml部分地呈现帖子,但我有一种感觉,我可能用错了方法。

Blog.rb

代码语言:javascript
复制
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

视图/index.html.haml

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

views/_post.html.haml

代码语言:javascript
复制
%h2=post.title
%p=post.html_body

错误

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-08 23:37:00

首先,要渲染部分,您必须执行以下操作:

代码语言:javascript
复制
render :_post, :locals => { :post => post }

如果你想渲染所有的帖子,只需使用一个循环:

代码语言:javascript
复制
%body
  - @posts.each do |post|
    = render :_post, :locals => { :post => post }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4629962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档