Rails Ajax 没有显示结果

Rails Ajax not displaying the result

我创建了一个新的控制器,将来只负责翻译不同对象的字符串。 这是控制器的代码:

 # frozen_string_literal: true

class Api::TranslationsController < AuthenticatedController
  def translate_string
    @translated_string = GoogleTranslator.translate('hello', 'de')
    render json: {translated_string: @translated_string.to_json}
  end

  helper_method :translate_string

  private

  def translations_params
    params.permit(
      :id,
      :translated_string
    )
  end
end

它位于目录 controllers/api/translations_controller 中。这是路线的一部分:

  namespace :api do
    resource :translations do
      member do
        get 'translate_string'
      end
    end
  end

这是我 html.erb 调用 JS 函数的一部分:

        <%= image_tag "google-icon.png", id: "google_icon", onclick: "test_transl()",
        remote: true%>

这是我的 JS 代码,目前只有 Ajax:

<script>
  function test_transl(){
      $.ajax({
          type: "GET",
          url: "/api/translations/translate_string",
          dataType: "json",
          success:function (result){
              console.log(result)
          }
      })
  }
</script>

我希望这个 ajax 代码能够将世界 'hello' 翻译成德语并在控制台中获得值 @translated_string - 'hallo' 但除了事实之外没有任何反应我得到的错误是 'statusText: "parsererror"'。可能有什么问题?

我终于发现我的代码出了什么问题。问题在于我没有在 ajax 中传递会话令牌。所以现在我的 ajax 代码将如下所示:

 $.ajax({
      type: "GET",
      headers: {
         "Authorization": "Bearer " + window.sessionToken
      },
      url: "/api/translations/translate_string",
      dataType: "json",
      success: function(result){
          console.log(result);
       },
     error: function (result){
          console.log(result, this.error)
     }
  })

然后像这样从控制器中定义:

  def translate_string
    @translated_string = GoogleTranslator.translate('hello', 'de')
    render json: @translated_string.to_json
  end

控制台中的输出是:“hallo”。