1

在我的应用程序中,我有一个文章和评论模型。我实现了一个回复功能,这样用户就可以通过简单地将他们想要引用的评论的 id 放在评论表单中来回复另一条评论,如下所示:#26(引用 id 为 26 的评论)。这一切都很好,使用正则表达式并回复 user_id attr:
extract from my comments_controller create action:

  if @comment.content.match(/(#([1-9]+))\s/)
  iteration_fragment = $2
  iteration_id = %Q{#{ iteration_fragment }}
  if @replied_to_comment = @article.comments.where(:iteration_id => iteration_id).first
    @comment.in_reply_to_user_id = @replied_to_comment.user_id
  end
  end

现在,不创建新模型,我只想在我的评论系统顶部放置一个“html帮助层”,这样“#33”等这些片段会自动转换为“#33”onmouseover链接,显示评论 33 onmouseover 的内容。所以我不想要bb代码引用,而是要真正的极简主义。
有人知道,我在寻找什么以及应该如何处理它?

4

1 回答 1

1

自动这个词让我觉得你能做到这一点的唯一方法是使用 jQuery..

$("input#your_selected_input").keyup(function(){
  $this = $(this);
  if ($this.val().match(/(#([1-9]+))\s/) {
    $matches = $this.val().match(/(#([1-9]+))\s/
    $this.parent().after($this.html().replace( $matches[0], $("<a/>").html()));
  }
});

那是自动的部分。。

要使用 Rails 中的内容加载页面,应该是这样的:

在您的评论模型中

def special_sauce_text
   matches = content.match(/(#([1-9]+))\s/)
   magic_sauce_links = []
   new_content = content
   if matches.present?
     for match in matches do
       magic_sauce_link << link_to(match, match, :class => 'your-special-stuff')
       new_content.gsub(match, magic_sauce_link)
     end
   end
   return new_content
end

然后你可以自由地应用它:

Comment.special_sauce_text
于 2012-06-16T01:54:19.633 回答