Angular.js Rails资源关联更新

时间:2016-09-11 21:10:01

标签: ruby-on-rails angularjs

我正在使用Angular Rails Resource处理带有轨道的角应用程序。当用户更新照片时,我想查询关联并将属性更新为true

我已阅读Angular Rails资源文档,但我没有看到有关查询关联的详细信息。这是一个有角度的东西,还是一个有轨的东西?

这是我的角度代码:

$scope.uploadHeadshot = ->
      Upload.upload(
        url: window.apiUrl + '/personas/' + $routeParams.unique_code + '/' + $routeParams.slug
        method: 'PUT'
        data: persona: headshot_attributes:
          image: $scope.headshot
          crop_x: $scope.cropAttributes.cropImageLeft
          crop_y: $scope.cropAttributes.cropImageTop
          crop_w: $scope.cropAttributes.cropImageWidth
          crop_h: $scope.cropAttributes.cropImageHeight
          # right here
          badge_attributes: completed: true).then ((response) ->
        $mdDialog.hide response.data
        resizeImage(false)
        return
      )

rails code

 def update
    @persona = Persona.friendly.find params[:id]
    @persona.assign_attributes persona_params
    return unprocessable_entity 'Invalid parameters', @persona.errors unless @persona.save
    render json: @persona, include: %w(modules owner badges)
 end

persona_params我有一个属性 badge_attributes: [:id, :completed]

我还有badge_type徽章上的attr,所以从角度方面我可以得到当前用户,做一个badge.where(badge_type: 'badge type').update(completed: true),但我不知道如何从角度做到这一点。或者这可能是你可以从#update

做这样的事情
if params[:badge_attributes]
  Badge.where(badge_type: 'badge type').first.update(completed: true)
end

我发布的内容没有做任何事情,但它没有打破照片上传的发生,我可以看到badge_attribute参数被发送。有谁知道我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

通过使用导轨进行重物提升,我能够解决这个问题。

if params[:badge_attributes]
  badge = Badge.where(persona_id: current_persona.id, badge_type: params[:badge_attributes][:badge_type]).first
  badge.update_attributes(completed: true)
end