【问题标题】:Update user attribute from Coffeescript?从 Coffeescript 更新用户属性?
【发布时间】:2024-05-19 01:20:02
【问题描述】:

如何在 Rails 中编写 Coffeescript 函数来更新数据库列?我想 Ajax 调用会是理想的:

id = $('#document').attr('data-document-id')
$.ajax
  url: "/documents/#{id}/update_attr"
  type: "GET"
  success: (data) ->
    console.log(data)

只有这样的方法吗?还是有更好的?

【问题讨论】:

    标签: javascript ruby-on-rails ajax ruby-on-rails-4 coffeescript


    【解决方案1】:

    请记住,前端代码(html、css、js)不能直接访问数据库。所以你需要一个 AJAX 请求。

    REST 最佳实践将要求您使用 POST/PUT/PATCH 方法,而不是 GET 方法,它永远不会改变应用程序的状态。

    此外,您没有向 Rails 后端传递任何值。

    $.ajax
       url: "/whatever/#{id}"
       type 'POST'
       data:
         key: value
       success: (data)->
         console.log data
    

    在 Rails 方面,您需要在 config/routes.rb 中设置适当的路由:

    post '/whatever/:id', to: 'some_controller#some_action'
    

    理想情况下,遵循最佳实践,您可能有某种

    resources :apples
    

    已经映射到 ApplesController。您现在必须实现该操作,如下所示:

    def update
      @object = Whatever.find(params[:id])
      if @object.update(key: params[:key]
        render json: { success: 1 }
      else
        render json: { success: 0 }
      end
    end
    

    该实现不完整(它不处理 HTML 请求、多键更新和其他花哨的东西),但它仍然应该解决您的问题。

    【讨论】: