在rails上写ruby并使用neo4j数据库。
帖子和用户是两个班级。 Flag是User与Post之间的关系。
flag的默认值为false。如果有人在帖子上放了一面旗帜。标志值将变为true。
旗级:
class Flag
include Neo4j::ActiveRel
include Neo4j::Timestamps
from_class :User
to_class :Post
type :FLAG_POST
property :flag, type: Boolean
validates_presence_of :flag
end
后置控制器中的标记操作:
def flag
flag = Flag.new(from_node: current_user, to_node: @post, flag: true)
respond_to do |format|
if flag.save
format.js { render :index }
else
format.js { redirect_to post_path, notice: 'Error putting flag on post.'}
end
end
end
查看:
<%= button_to "flag", flag_post_path(post), class: 'btn btn-default', method: :put, data: { confirm: 'Are you sure to flag this post?' }, remote: true %>
另外,我想在放置标志时添加警报。如果帖子已经放置了标志,则网络将提醒用户“帖子已被放置标志”。如何检查标志值是true还是false?我检查了neo4j图,并建立了关系。但我不知道标志值是否改变了。
我刚开始学习rails和neo4j。谢谢你的帮助。
答案 0 :(得分:0)
您可以使用flag.valid?
检查对象是否有效保存。
答案 1 :(得分:0)
您可以使用jquery在click上切换值并传递更改的值。或者你可以简单地改变每次的值。类似的东西:
$('.js-flag').on('click', function(e){
// you'll need to add that js-flag class to your flag
e.preventDefault();
$.ajax({
type: 'GET',
url: '/posts/flag', // create this route if doesn't exist
data: {
// whatever data you want to pass
// need to pass the post_id at a minimum
}
}).done(function(ajax_response){
console.log('success!');
})
})
确保您在routes.rb文件中有标记路径。
在控制器内部更改标志的值。