2012-08-29 71 views
0

我在HABTM關係中有兩個模型,Posts和Hashtags。Rails HABTM without form

我交的控制器是這樣的:

def create 
    @post = current_user.posts.new(params[:post]) 

    respond_to do |format| 
     if @post.save 
     format.html { redirect_to @post, :notice => 'Post was successfully created.' } 
     format.json { render :json => @post, :status => :created, :location => @post } 
     else 
     format.html { render :action => "new" } 
     format.json { render :json => @post.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

現在,當用戶創建一個新的崗位,我要做到以下幾點:爲井號標籤,也就是說

  • 檢查開始用「 #'
  • 如果該標籤已經存在,則將該帖子與標籤鏈接
  • 如果該標籤不存在,則將其添加到Hashtags並鏈接該帖子和新添加的標籤

我想我必須這樣做後我做posts.new,但我不確定如何繼續。我只是編輯@post對象?如果是這樣,那麼@ post.save應該採用什麼格式來獲取鏈接?

任何建議將不勝感激!

回答

0

好吧,如果你有你的關係,正確安裝,您可以運行在後文正則表達式讓所有的主題標籤了,那麼你可以用一些指定主題標籤像@post.hashtags = tags(標記爲您從文本中提取的#標籤)然後保存模型。

另一種(不太合適的方式我會說),是做同樣的事情,但檢查是否存在標籤並創建它們並通過模型保存它們,但好的做法表明你通過與Post模型。

+0

好的,標籤是什麼? ID的列表?如果標籤只是['#a','#b'],那麼它就不會起作用。 – Doa

+0

Rails將保存關聯,就像hashtags的內容一樣,這就是爲什麼我還提供了通過標記保存標記並將其鏈接到帖子的選項。 – 8vius

+0

但是,這會允許我做一些事情,比如顯示標籤'#abc'下的所有帖子嗎? – Doa