2012-12-12 87 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。我需要更新数组值还怎么做呢? –

相关问题