我已经在数据库中存储了一些基本和重定向URL值。我需要从浏览器获取window.location.hostname
的值并在数据库中检查它。如何将此值传递给ruby代码?我尝试执行以下操作:
<script>
var base_url = window.location.hostname;
<% url_config = UrlConfig.find_by(base_url: base_url) %>
if (window.location.pathname == "/") {
window.location.href = url_config.redirect_url;
</script>
但是我知道这是行不通的,因为我无法将Javascript变量的值传递给Ruby代码。我怎样才能将这个值转化为Ruby代码?
答案 0 :(得分:0)
据我所知,您希望在用户到达首页时将其重定向到配置的URL。
如果要与Ruby和模型交互(因此与数据库进行交互),建议不要在视图中执行此操作,而应在控制器中通过before_action
进行操作。
class MyController < ApplicationController
before_action :redirect_to_configured_url, if: -> { current_path == root_path }
# ...
private
def redirect_to_configured_url
url_config = UrlConfig.find_by(base_url: base_url)
redirect_to url_config.redirect_url if url_config # you also need to check if the UrlConfig was found
end
end
答案 1 :(得分:0)
我可以使用request
中的Rails
。我是这样的:
<script>
var redirect_url = '<% UrlConfig.find_by(base_url: request.host).redirect_url %>';
if (window.location.pathname == "/") {
window.location.href = redirect_url;
}
</script>
request.host
在浏览器的当前URL中提供主机的值。然后我们可以取值并应用逻辑。