2011-11-04 158 views
-1

我使用嵌套模型gem創建一個可以帶標籤的圖片。現在我已經爲模型圖片添加了一個屬性,因此它具有屬性標記列表。當我創建一個新的標籤,我希望這種情況發生Rails模型創建功能

class TagsController < ApplicationController 
    def create 
    @tag = Tag.new(params[:id]) 
    if @tag.save 
     taglist = picture.taglist 
     [email protected] 
     @tag.picture.update_attributes(:taglist => taglist) 
    end 
    end 
end 

,並在我的路線

resources :pictures do 
    resources :tags 
end 

當我提出一個新的標籤,什麼也沒有發生在標記列表屬性,像什麼也沒發生,爲什麼呢?

+0

是圖片定義?你得到什麼錯誤? –

+0

@Stephanie是它的定義(ive關聯他們),沒有錯誤顯示,只是沒有任何反應 – Kevin

+0

嗯,你確定'params [:id]'?不應該是'params [:tag]'? – tbuehlmann

回答

1

很難幫助由於缺乏信息,但是我看到了兩個可能的問題:

  1. Tag.new(params[:id])沒有意義。假設標記繼承自ActiveRecord :: Base,則需要傳遞屬性的散列(例如Tag.new(:name => 'mytag'))。由於存在驗證錯誤,您可能根本無法進入if @tag.save塊。另外,您不需要爲要創建的對象提供一個id。數據庫選擇該ID。

  2. 塊內部,picture未定義在第一行。

爲什麼不嘗試的東西像調試:

if @tag.save 
    taglist = picture.taglist 
    [email protected] 
    @tag.picture.update_attributes(:taglist => taglist) 
else 
    p "ERRORS:" 
    p @tag.errors.full_messages 
end 

看到打印出到控制檯什麼錯誤。

0

我絕對認爲該圖片可能在控制器的create方法中未定義。您能否向我們展示您用來創建新標籤的視圖?有沒有一個表單域可以讓你選擇哪張照片獲取標籤?

請向我們展示關聯和您創建新標籤的視圖。

其實,我真的建議做飯你自己,而不是爲使用:

敏捷Web開發的acts_as_taggable_on_steroids

這是一個很好的插件,使標籤容易;它內置了不少漂亮的功能,包括搜索,標籤雲等。我們在我們的項目中使用它。