2012-12-12 117 views
0

我正在開發一個Ruby on Rails應用程序。在我的控制器中,我需要多次更新表格屬性。我把這個邏輯放在控制器中。如何在Ruby on Rails中一次更新多條記錄?

def index 
    if request.post? 
    @user_new = Bookmark.new(params[:user_new]) 
    tags = @user_new.tags.split(",") 
    i=0 
    while i < tags.length 
     @user_new.update_attributes(:title => @user_new.title, :url => @user_new.url, :tags => i) 
     i=i+1 
    end 

    @check = "hello" 
    end 

end 

這個遍歷while循環,直到達到tags數組大小。並且多次更新是使用表內的不同值完成的。

這應該會產生所有記錄的更新。在數組大小爲3的情況下,應該插入3條記錄。但這不是偶然。任何人都可以告訴我如何使用數組插入多行記錄作爲每行中的區分因子嗎?

回答

0

會是這樣的工作:

@user_new = Bookmark.new(params[:user_new]) 
if @user_new.save! 
    @user_new.tags.split(",").each do |tag| 
    tag.update_attributes(:title => @user_new.title, :url => @user_new.url) 
    end 
else 
    < do something else >> 
end 

或者你也可以使用.create。

請關注@Thilo的其他帖子,爲標籤建立索引。

另外,如果你運行這個!在update_attributes上!你有沒有看到任何錯誤。

您可能有一些驗證錯誤。試試看,並檢查控制檯/日誌。

+0

對不起,它應該是「:tags => tag [i]」。這意味着數組內的每個元素都被迭代並插入。 –

+0

你可以嘗試一下爆炸(!),看看你是否有任何東西,我們可以擔心那一點?你的模型中有attr_accessible嗎? – simonmorley

+0

我得到nomethoderror,如果超出這個@ user_new.tags.split(「,」)。each do | tags | tags.update_attributes(:title => @ user_new.title,:url => @ user_new.url) end。我需要更新數組值還怎麼做呢? –

相關問題