在我分享内容到facebook后的rails应用程序的场景中,我将获得一个帖子ID为
的响应对象post_id: "mypostidhere"
如果不成功,我将收到带有错误消息的响应对象。
因此,根据响应,我想更改数据库表中当前用户的最后一行的布尔列。为此,在我的 .js.erb 文件中,我尝试访问 current_user.model.last ,但它会引发以下错误。
undefined local variable or method `current_user' for
那么如何根据响应更改数据库中的布尔列?
已更新
Ajax代码
$.ajax({
type: "POST",
url: "/action"
});
控制器代码
def action
current_user.modal.last.toggle!(:boolean-column-name)
end
它成功更改了表列。但之后我在浏览器CONSOLE中收到错误,如下所示
POST http://URL/action
500 (Internal Server Error)
我是AJAX的新手。我在ajax请求中做错了什么?提前谢谢。
答案 0 :(得分:0)
current_user
不是JS函数/文件的局部变量,它是rails应用程序中提供并可用的帮助程序。
所以,我想问的是:
您如何在JS文件中使用
current_user
?
您可以做的是对控制器方法进行ajax
调用,然后直接从控制器访问current_user
。
答案 1 :(得分:0)
如果您想更改数据库,您将需要与您的Rails应用程序进行通信,这是通过ajax
完成的:
#app/assets/javascripts/application.js
... // your events will fire
$.ajax({
url: "/users/update",
method: "PUT",
data: { param: "value" }
success: function(data) {
// do something here
};
});
这将允许您执行以下操作:
#config/routes.rb
resources :users do
put :update, on: :collection
end
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def update
current_user.update(update_params)
end
private
def update_params
params.permit(:param)
end
end