タグの送信を処理するために、ブートストラップ タグの入力を使用しています。私もacts-as-taggable-onを使っています。
フォームに情報を入力するとうまくいきます。正しく記入されたフォームを送信すると機能します。ただし、検証に失敗した場合、ページは以前のタグが 1 つのタグに結合されてレンダリングされます。
送信前の html は次のとおりです。
<form action="/items" method="post">
<div class="bootstrap-tagsinput">
<span class="tag label label-info">
"foo"<span data-role="remove"></span>
</span>
<span class="tag label label-info">
"bar"<span data-role="remove"></span>
</span>
<span class="tag label label-info">
"foobar"<span data-role="remove"></span>
</span>
</div>
<input type="text" value name="item[tag_list]" id="item_tag_list" style="display: none;">
</form>
検証失敗後
<div class="bootstrap-tagsinput">
<span class="tag label label-info">
"foo bar foobar"<span data-role="remove"></span>
</span>
</div>
私のコントローラー:
def create
Item.transaction do
@item= Item.create(name: item_params[:name],
tag_list: item_params[:tag_list],
created_by: current_user.id,
status: Item::STATUS[:pending])
if @item.errors.empty?
@user_item = @item.user_items.build(user_id: current_user.id)
if @user_item.save
flash[:notice] = "Thank you for your item request! Your request will be processed within the next 5 days."
redirect_to items_path
else
render :new
raise ActiveRecord::Rollback, "UserItem create failed"
end
else
render :new
end
end
end
private
def item_params
params.require(:item).permit(:name, :tag_list)
end
end
ユーザーが入力したときと同じように、このパラメーターを複数のタグとして表示する方法が必要です。