在Ruby代码中获取window.location.hostname

时间:2019-07-31 06:35:56

标签: ruby-on-rails ruby-on-rails-4

我已经在数据库中存储了一些基本和重定向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代码?

2 个答案:

答案 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中提供主机的值。然后我们可以取值并应用逻辑。