![](/img/trans.png)
[英]How do I make a request to a REST controller and use data in my JSP with ajax and jquery?
[英]How do I make a POST request to my Rails controller with Ajax?
我试图将信息从前端的JavaScript游戏状态发送到控制器,然后发送到数据库。 我没有任何回应,也不确定为什么。
这是Ajax的监听事件,其中包含我要发送的变量值( score
)。
$("#link-to-hq").click(function(){
test = $.ajax({
type: "POST",
url: "/users/:id",
data: {dollars: score},
datatype:"html",
async: true
});
});
和它监听的按钮:
</script>
<%= link_to "Home", user_path(@user), id: 'link-to-hq' %>
而我想打的路线:
PATCH /users/:id(.:format) users#update
然后,这是我的控制器:
def update
@user = User.find(params[:id])
new_dollars = params[:dollars]
#store to database
@user.dollars<<new_dollars
end
我似乎没有收到任何反馈。 我的请求或控制器的公式是否正确?
编辑1
我确实确实按照建议更改了请求:
$("#link-to-hq").click(function(){
test = $.ajax({
type: "PATCH",
url: "/users/<%= @user.id %>",
data: {dollars: score},
datatype:"html",
async: true
});
});
它仍然没有反应。
这是我的开发人员日志信息。 有错误:
Started PATCH "/users/0" for 127.0.0.1 at 2014-07-14 13:52:30 -0400
Processing by UsersController#update as */*
Parameters: {"dollars"=>"1", "id"=>"0"}
[1m[35mUser Load (0.6ms)[0m SELECT "users".* FROM "users" WHERE "users"."remember_token" = '5b38b7021d2e00f6aecc21b29e2322d4f988c6eb' LIMIT 1
[1m[36mUser Load (0.4ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1[0m [["id", 0]]
Completed 400 Bad Request in 5ms
ActionController::ParameterMissing (param is missing or the value is empty: user):
app/controllers/users_controller.rb:85:in `user_params'
app/controllers/users_controller.rb:66:in `update'
POST
适用于new
请求。
尝试:
type: "PATCH",
我相信这也会起作用:
type: "PUT",
另外,请确保将:id
指定为实际数字。
要扩展beautifulcoder的准确答案,您既需要将类型与要查找的路径对齐,还要确保在ajax URL中使用实数。 您已将URL更改为引用@user,但是Javascript无法引用Ruby变量。
解决当前问题的最简单方法是将Ruby变量传递给视图中的data属性:
# your view
<element id="some_id" data-user_id="<%= @user.id %>"></element>
# your javascript/jquery
$("#link-to-hq").click(function(){
var id = $('#some_id').data('user_id');
test = $.ajax({
type: "PATCH",
url: "/users/" + id,
data: {dollars: score},
datatype:"html",
async: true
});
});
如果该用户是当前用户,并且您具有或可以创建current_user帮助器,则也可以使操作:id独立:
# javascript/jquery
$("#link-to-hq").click(function(){
test = $.ajax({
type: "PATCH",
url: "/users/update",
data: {dollars: score},
datatype:"html",
async: true
});
});
# routes.rb
PATCH /users/update users#update
#users_controller.rb
def update
@user = current_user
new_dollars = params[:dollars]
#store to database
@user.dollars<<new_dollars
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.