我正在尝试在Sinatra博客中为我的帖子实施评论。这是我的评论和帖子数据库:
DB.create_table :Posts do
primary_key :id
String :Title
String :Content
end
DB.create_table :Comments do
primary_key :id
String :Content
foreign_key(:Post_id, :Posts)
end
这是模型:
class Post < Sequel::Model
one_to_many :Comments
end
class Comment < Sequel::Model
many_to_one :Posts
end
这是我的问题:
<form action="/comments" method="post">
<div class="form-group">
<label for="Content">Comment:</label>
<br>
<textarea id="Content" class="form-control" name="Content" rows="3"></textarea>
</div>
<button type="submit" class="btn btn-success">Submit</button>
</form>
这是我的控制器代码:
post "/comments" do
@comment = Comment.insert(:Content => params[:Content], :Post_id => ???? )
end
我想将特定注释的帖子的id插入到:Post_id属性/外键(问号所在的位置)。
我想要这样,以后我可以将每条评论显示到相应的帖子。
你能帮我解决这个问题,并指引我走正确的道路吗?
答案 0 :(得分:0)
通常我会将表单中的帖子ID作为隐藏字段插入。好吧,假设您在帖子页面上呈现评论表单
<form action="/comments" method="post">
...
<input type="hidden" name="post_id" value="<%= @post.id %>" />
</form>
然后在你的红宝石中你可以从params
@comment = Comment.insert(:Content => params[:Content], :Post_id => params[:post_id]
顺便说一句,只是建议的一句话,你应该使用你的属性的低位情况,强调的风格(我说的是Content
和Post_id
)因为它有点像Ruby的方式。大写样式用于属性