mysql - 在没有表单的情况下在 Rails 中发出 AJAX 请求

标签 mysql ruby-on-rails ruby ajax

所以我有一个 posts在 Rails 应用程序中生成的脚手架,我添加了一个 upvotedownvote列到帖子模型。我在 View 文件上添加了一个“upvote”按钮,当您点击 upvote 按钮时我需要进行 AJAX 调用并查询数据库,但是 upvote 按钮没有真正的 Rails <form>附加到它。我如何进行此 AJAX 调用并将赞成票添加到数据库以获取赞成票?

当我进行此 AJAX 调用时:

$('.up,.down').click(function(){
    $.ajax({
      type: 'POST',
      url: '/posts',
      dataType: 'JSON',
      data: {
        post: {
          upvote: 1
        }
      },
      success: function(){
        alert('success')
      }
    });
  });

它返回 500 错误。我从这里去哪里?

最佳答案

您可以在 link_to 助手上使用 :remote => true 属性 例如:

<%= link_to post_upvote_path(post), :remote => true, :method => "put" %>
<%= link_to post_downvote_path(post), :remote => true, :method => "put" %>

然后在 config/routes.rb 中:

resources :posts do
  put "upvote", :to => "posts#upvote", as: :upvote
  put "downvote", :to => "posts#downvote", as: :downvote
end

然后在你的帖子 Controller 中处理投票,就像你可能已经在做的那样,并在操作中使用 params[:id] 获取帖子 ID

Here is an intro to rails flavored unobtrusive javascript

更新
要查看创建的赞成票和反对票路由,请转到终端并键入

rake routes | grep vote

这将为您提供名称中包含“投票”的所有路线的列表。或者只需键入 rake routes 即可获得所有路线的列表。第一列是命名路由,只需将“_path”附加到它的末尾即可在您的应用中使用它 - 如上面的 post_upvote_path 将被视为

post_upvote  PUT  /posts/:id/upvote(.:format) posts#upvote

在你的 PostsController 中你会想要这些 Action :

class PostsController < ApplicationController
  ###
  # index, show... other RESTful actions here
  ###


  def upvote
    @post = Post.find params[:id]
    # code for however you are voting up the post here
  end

  def downvote
    @post = Post.find params[:id]
    # code for however you are voting down the post here
  end
end

关于mysql - 在没有表单的情况下在 Rails 中发出 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248974/

相关文章:

ruby-on-rails - 在 OSX Mavericks 之后无法加载此类文件 -- script/../config/boot (LoadError)

ruby - 如何在不创建新对象实例的情况下将 Integer 变量递增 X

php - LEFT JOIN 后的 ORDER BY 不能在浏览器中工作但在 SQL 中工作

ruby-on-rails - var_dump 并像 php 一样死去,在 ruby​​ on rails 中(在 ruby​​ on rails 中调试)

ruby-on-rails - 如何加快 Rails 延迟作业的启动时间?

ruby-on-rails - 确定路径是否存在作为 Rails Controller 中的路由

ruby-on-rails - Facebook 连接 + restful_authentication

mysql - 优化where语句MYSQL

MySQL 子查询 - 查找用户所在的房间,并查找房间中的其他人

php - 栏目标题及更新异常