充当可标记的,不添加具有 angular 形式的标签

Acts as taggable not adding tags with an angular form

我有一个 angular 表单正在创建一个带有标签的对象:

<form class="form-horizontal" ng-submit="createBeacon(beaconData)">
 <div class="form-group">
  <label>Tags</label>
  <div id="tags-list" data-current-user-company="{{current_user.company_id}}">
  <input type="text" id="tags-input" class="form-control" ng-model="beaconData.tag_list" name="beacon[tag_list]" placeholder="project, client 72, yellow, design"/>
 </div>
</div>

此表单正在提交给 rails 控制器,其中包含工厂以提交给数据库。这是提交数据的函数:

$scope.createBeacon = function(beacon){
 Beacon.save({
  alias: beacon.alias,
  description: beacon.description,
  status: beacon.status,
  company_id: currentUser.company_id,
  venue_id: beacon.venue_id,
  beacon_id: beacon.beacon_id,
  tag_list: beacon.tag_list
 });
}

结果是 tag_list 作为参数传递给 Rails,如下面的服务器日志所示,但它不会像提交时那样提交到标签和标签表中Rails 形式。

对这里的操作有什么建议吗?

更改强参数行来自:

params.require(beacon).permit([:tag_list])

至:

params.permit([:tag_list])

修复了 tag_list 未提交标签 table 的问题。我知道这不是可取的,但这是迄今为止我找到的唯一解决方案。

"tag_list" => "Test 234" 在您的请求中显示它是作为文本而不是数组传入的。您需要将其作为数组传递。

您还需要确保 permitted_params 允许标签列表作为数组。 params.require(beacon).permit(tag_list: [])