【问题标题】:rails ajax success not workingrails ajax成功不起作用
【发布时间】:2015-11-10 18:28:43
【问题描述】:

在 Rails 上,我正在尝试创建无限类似按钮,使用户能够多次喜欢,但 Ajax 似乎不起作用。这是我的代码。

app/views/posts/_like.html.erb

<%= link_to 'B', post_like_path({:id => @post}), :class => 'like', :method => :post, :remote => true %>

app/controllers/posts_controller.rb

def like
  post = Post.find(params[:id])
  post.like += 1
  post.save
  if request.xhr?
    puts 'test' #'test' appears when like clicked
  else
    redirect_to :back
  end
end

app/assets/javascript/application.js

$(document).on('ajax:success', function(e) {
  console.log('test1') // 'test1' does not appear!!!
});
console.log('test2') // 'test2' does appear

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    由于您正在显示您的 puts 语句,因此您似乎并不太远,但您的 like 路由需要响应您的 ajax 请求。为了做到这一点,我会在你的 like 方法中设置一个 respond_to 块

    def like
      post = Post.find(params[:id])
      post.like += 1
      post.save
      respond_to do |format|
        format.js
      end
    end
    

    有了这个,你就可以创建一个 js 模板,app/views/posts/like.js.erb

    #like.js.erb
    console.log('like clicked');
    

    【讨论】:

      【解决方案2】:

      我看到了几个问题,您使用 path_helper 您没有将 @post 实例化为变量(至少不是您所展示的),而且您的 ajax 方法可能看起来更接近这个.. .

      #app/views/posts/_like.html.erb
      <%= link_to 'B', post_like_path(:id => @post.id), :class => 'like', :method => :post, :remote => true %>    
      
      #config/routes.rb
      get "/some-path", to: "posts#index"
      post "/some-path", to: "posts#like", as: "post_like"
      
      #app/controllers/posts_controller.rb
      def index
        @post = Post.find(params[:id])
      end
      
      def like
        post = Post.find(params[:id])
        post.like += 1
        post.save
      end
      
      #app/assets/javascript/application.js
      $(".like").click(function(event) {
        event.preventDefault();
        url = $(this).attr('href');
        $.ajax({
          type: 'POST',
          url: url,
          success: console.log('success')
        });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        相关资源
        最近更新 更多