【问题标题】: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 请求、多键更新和其他花哨的东西),但它仍然应该解决您的问题。