【问题标题】:Rails - bootstrap tags input - tags rendering as single tag on validation failRails - 引导标签输入 - 在验证时呈现为单个标签的标签失败
【发布时间】:2016-01-29 23:08:20
【问题描述】:

我正在使用bootstrap tags input 来处理标签提交。我也在使用acts-as-taggable-on。

在表单中输入信息可以正常工作。提交正确填写的表格有效。但是,当验证失败时,页面将呈现之前的标签组合成一个标签。

这是提交前的一些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

我需要一种方法让这个参数显示为多个标签,就像用户输入它时一样。

【问题讨论】:

    标签: ruby-on-rails bootstrap-tags-input


    【解决方案1】:

    当您使用逗号分隔的字符串设置 tag_list 时,它会变成一个字符串数组。如果验证失败,我需要将 tag_list 属性设置为标签字符串。这两行代码帮助我完成了这项工作。

    @item.tag_list.remove(item_params[:tag_list], parse: true)
    @item.tag_list.add(item_params[:tag_list])
    

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2010-10-03
      • 2021-11-26
      相关资源
      最近更新 更多