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”。
我创建了一个新的控制器,将来只负责翻译不同对象的字符串。 这是控制器的代码:
# 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”。