【发布时间】:2011-07-01 06:22:22
【问题描述】:
我想在Sinatra和DataMapper中做一个博客应用,我的主应用文件是这样的。
%w[rubygems sinatra data_mapper].each{ |r| require r }
DataMapper.setup(:default , ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/development.db")
class Post
include DataMapper::Resource
property :id, Serial
property :title, String
property :author, String
property :body, Text
has n, :comments
end
class Comment
include DataMapper::Resource
property :id, Serial
property :post_id, Serial
property :name, String
property :body, Text
belongs_to :post
end
helpers do
def admin?
request.cookies[settings.username] == settings.token
end
def protected!
halt [401, 'Not Authorized'] unless admin?
end
end
post '/comment/create' do
comment = Comment.new(:name => params[:name], :body => params[:body])
if comment.save
status 201
redirect '/post/'+post.id.to_s
else
status 412
redirect '/'
end
end
get '/post/:id' do
@post = Post.get(params[:id])
@comments = Comment.new
erb :post
end
delete '/comment/:id' do
Post.get(params[:id]).Comment.(params[:id]).destroy
redirect '/post/'+post.id.to_s
end
DataMapper.auto_upgrade!
现在,我的问题是如何设置 cmets 的实例变量 在 post show 文件中,创建、删除和显示 cmets。
欢迎任何建议和解决方案。
【问题讨论】:
-
您能否给我们进一步说明一下您想要什么?
-
基本上我想要一个基本的帖子来评论我的应用程序中的关系,就像博客一样。
-
在我看来您已经掌握了它。您在此处定义了 Post 和 Comment 之间的一对多关系。你还追求什么?
-
我实际上是在视图中的实例变量之后。所以我不能以某种方式制作新的 cmets?
标签: ruby sinatra datamapper