remote:true Ajax调用在本地服务器中运行,但在Heroku中不运行

时间:2015-04-24 16:12:56

标签: jquery ruby-on-rails ruby ajax heroku

这是Stack Overflow的第一个问题。

我正在编写一个将在Heroku中运行的rails应用程序。用户可以喜欢/不喜欢帖子。此行动由推荐的宝石的Sidekiq工人注册。

我正在使用公共活动来跟踪帖子的活动,因此a.trackable.id是post.id ...

我在以下代码中使用localhost进行ajax调用:

public_activity / posts / _create.html.erb:

(doorbells, sleighbells)

在我的帖子控制器中:

<%= link_to "Beğenmekten Vazgeç", unlike_post_path(a.trackable.id), data: {id: a.trackable.id, toggle_text: 'Beğen', toggle_href: like_post_path(a.trackable.id)}, class: 'like_toggle', remote: true %>

和_create.coffee文件是

def like
  @post = Post.find(params[:id])
    current_user.like(@post)

  if request.xhr?
    render json: { id: @post.id }
  else
    redirect_to user_profile_path(@post.user)
    flash[:notice] = "Ajax hatası"
  end
end

基本上,它改变了this问题中描述的喜欢/不喜欢的文本。

在我的gemfile中,我有

$(document).on 'ajax:success', 'a.like_toggle', (status, data, xhr) ->
  $("a.like_toggle[data-id=#{data.id}]").each ->
    $a = $(this)
    href = $a.attr 'href'
    text = $a.text()
    $a.text($a.data('toggle-text')).attr 'href', $a.data('toggle-href')
    $a.data('toggle-text', text).data 'toggle-href', href
    return

在我的application.js文件中;

gem 'jquery-rails', '~> 4.0.3'

我在生产中清理和预编译了资产。

它在localhost中正常工作。但是在Heroku中,我似乎无法让它发挥作用。

这是服务器日志:

//= require jquery
//= require jquery_ujs
//= require jquery-ui

非常感谢任何帮助或想法。 谢谢。

1 个答案:

答案 0 :(得分:1)

解决了它。问题是在Heroku环境中没有jquery_ujs,尽管有所有预编译和其他东西。

在config / environments / production.rb文件中,我设置了config.serve_static_files = true,我做了RAILS_ENV=production rake assets:precompile然后推送回到Heroku。

就是这样。