如何将 JavaScript GetElementById 字符串值传递给 Rails?
How to pass JavaScript GetElementById string value to Rails?
我有一种方法可以将 Product class 中的不同字符串从英语翻译成另一种语言。它有两个变量:字符串和语言。对于第一个,我希望获得文本区域的当前值。这是它在 JS 中的样子:
var primary_value = document.getElementById('primary_body_html_value').getElementsByClassName('note-editable')[0].innerText;
然后我想在JS函数中使用这个方法:
var translated_string = "<%= GoogleTranslator.translate(primary_value, 'de') %>"
主要问题是如何在'translated_string'里面使用这个'primary_value'?据我所知-我可以使用 Ajax 但我对此有点陌生,我不明白如何正确编写 Ajax 和产品控制器的方法。如果您需要控制器代码:
class ProductsController < AuthenticatedController
before_action :set_product, only: %i[show edit update]
def index
if params.include?('id')
redirect_to edit_product_path(params[:id]) and return
end
end
def edit
redirect_to products_path, error: 'product not found' unless @product
render :edit_polaris
end
def update
if @product.update(product_params)
render json: {
status: :ok,
notice: 'Saved successfully!'
}, status: 200
else
render json: {
status: :error,
error: 'Something Went Wrong'
}, status: 400
end
end
private
def product_params
params.permit(
:id,
primary_locale: {},
locales: {}
)
end
def set_product
@product = Product.find(product_params[:id])
end
end
这只是一个草图,但希望对您有所帮助。
它可以在您现有的控制器方法之一中,为了示例,假设您向 ProductsController 添加了一个名为 translated_string 的路由(和控制器方法)。
#ProductsController
def translated_string
primary_value = params[:primary_value]
@translated_string = GoogleTranslator.translate(primary_value, 'de')
render json: {translated_string: @translated_string}
end
现在,当设置了 primary_value 的 DOM 页面出现问题时,您可以通过 ajax 将 primary_value 发送到 translated_string,然后您会收到 json 回复翻译后的字符串 - 你可以用它做任何你想做的事。这只是一个例子,有一百万种方法可以解决这个问题,希望这能给你一个方向。
我有一种方法可以将 Product class 中的不同字符串从英语翻译成另一种语言。它有两个变量:字符串和语言。对于第一个,我希望获得文本区域的当前值。这是它在 JS 中的样子:
var primary_value = document.getElementById('primary_body_html_value').getElementsByClassName('note-editable')[0].innerText;
然后我想在JS函数中使用这个方法:
var translated_string = "<%= GoogleTranslator.translate(primary_value, 'de') %>"
主要问题是如何在'translated_string'里面使用这个'primary_value'?据我所知-我可以使用 Ajax 但我对此有点陌生,我不明白如何正确编写 Ajax 和产品控制器的方法。如果您需要控制器代码:
class ProductsController < AuthenticatedController
before_action :set_product, only: %i[show edit update]
def index
if params.include?('id')
redirect_to edit_product_path(params[:id]) and return
end
end
def edit
redirect_to products_path, error: 'product not found' unless @product
render :edit_polaris
end
def update
if @product.update(product_params)
render json: {
status: :ok,
notice: 'Saved successfully!'
}, status: 200
else
render json: {
status: :error,
error: 'Something Went Wrong'
}, status: 400
end
end
private
def product_params
params.permit(
:id,
primary_locale: {},
locales: {}
)
end
def set_product
@product = Product.find(product_params[:id])
end
end
这只是一个草图,但希望对您有所帮助。 它可以在您现有的控制器方法之一中,为了示例,假设您向 ProductsController 添加了一个名为 translated_string 的路由(和控制器方法)。
#ProductsController
def translated_string
primary_value = params[:primary_value]
@translated_string = GoogleTranslator.translate(primary_value, 'de')
render json: {translated_string: @translated_string}
end
现在,当设置了 primary_value 的 DOM 页面出现问题时,您可以通过 ajax 将 primary_value 发送到 translated_string,然后您会收到 json 回复翻译后的字符串 - 你可以用它做任何你想做的事。这只是一个例子,有一百万种方法可以解决这个问题,希望这能给你一个方向。