0

我在我的数据库中创建了一个名为“hashtags”的新模型和一个新表

这是 schema.db

create_table "hashtags", :force => true do |t|
    t.string   "hashtags"
    t.integer  "post_id"
    t.datetime "created_at",   :null => false
    t.datetime "updated_at",   :null => false
  end

hashtags.rb

class Hashtags < ActiveRecord::Base
  attr_accessible :hashtags, :post_id
end


def create
  hashtag_regex = /\b#\w\w+/
  @post = current_user.posts.build(params[:post])
  @post.hashtags = @post.text.scan(hashtag_regex)
end  

在 post 模型中,这是我添加的

class Post < ActiveRecord::Base
  attr_accessible :content
  belongs_to :user
  has_many :hashtags, dependent: :destroy

对于所有有主题标签(或可能是 2 个以上主题标签)的帖子,我想在一个名为“/hashtags”的新页面中按日期降序列出它们。所以这就是我希望它在视图中显示的方式

4/30/2013
#tag3 #tag2 by user2
#tag1 by user5

4/29/2013
#tagz by user10
#tagx #tagy by user3

4/25/2013
#tagz #tagy #tagx by user2

内部视图\static_pages\hashtags.html.erb

我正在尝试创建此视图,但我怎样才能最好地做到这一点?

4

1 回答 1

0

要保存哈希标签,您需要一个 before save 回调方法,并在控制器中摆脱该逻辑。

class Post < ActiveRecord::Base

    after_save :process_hashtags

    def process_hashtags
       hashtag_regex = /\B#\w\w+/
       text_hashtags = text.scan(hashtag_regex)
       text_hashtags.each do |tag|
         hashtags.create name: tag
       end
     end
end

此回调将遍历它在文本中找到的主题标签数组,并创建一个Hashtag模型并将其与Post模型相关联。

让我知道它是否有效,因为它可能需要一些调整。

于 2013-04-30T21:27:27.620 回答