【问题标题】:Acts as taggable not adding tags with an angular form充当可标记而不添加具有角度形式的标签
【发布时间】:2017-01-12 17:38:22
【问题描述】:

我有一个角度形式,它正在创建一个带有标签的对象:

<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 表单提交时那样提交到标签和标记表中。

有什么建议可以在这里做什么吗?

【问题讨论】:

  • 我在 beacon=&gt; {} 哈希中看不到 tag_list。它是顶级参数之一,但我认为它应该与信标特定值一起使用。
  • 我相信这是问题的一部分,但我不确定为什么它不会与其他参数一起出现在散列中。
  • beaconData 是如何填充的?
  • 它以角度形式从 ng-model 获取值。

标签: javascript ruby-on-rails angularjs acts-as-taggable-on


【解决方案1】:

从以下位置更改强参数行:

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

到:

params.permit([:tag_list])

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

【讨论】:

    【解决方案2】:

    "tag_list" =&gt; "Test 234" 在您的请求中显示它是作为文本而不是数组传入的。你需要让它作为一个数组传递。

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

    【讨论】:

    • 我试过这种方法,并没有解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2011-04-23
    • 2010-12-20
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多