0

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

これは、tags 配列のサイズに達するまで while ループを繰り返します。そして、テーブル内の異なる値で複数回更新が行われます。

これにより、すべてのレコードが更新されます。配列サイズが 3 の場合、3 つのレコードが挿入されます。しかし、それは起こっていません。配列を各行の差別化要因として使用して複数のレコードを挿入する方法を誰か教えてもらえますか?

4

1 に答える 1

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に!エラーが表示されますか。

検証エラーが発生する可能性があります。それを試して、コンソール/ログを確認してください。

于 2012-12-12T16:50:00.850 に答える