【问题标题】:How to display my root_url on a page as "example.com" rather than "http://example.com"如何在页面上将我的 root_url 显示为“example.com”而不是“http://example.com”
【发布时间】:2011-11-03 11:25:12
【问题描述】:

我正在尝试以更简洁的方式在我的用户个人资料中实现此网址: 个人资料地址:localhost:3000/用户名

这就是我的做法: <%= link_to "localhost:3000#{root_path}#{@user.username}", @user.username %>

这是一种非常丑陋的方式。我可以将我想要的 url 存储在 helper 或控制器中的变量中,或者其他东西,例如shorted_root_url = localhost:3000/(或站点名称)还有其他方法可以做到...

但是有没有办法我可以只使用 root_url 并在显示在用户个人资料上时让一些魔法从 url 中删除 http://?

注意: 我说的是在用户页面上显示给用户的 URL,不是在锚标记的 href attr 中。

【问题讨论】:

  • 网址必须以方案开头。 http 是一个方案。
  • @Jonathan:不一定:stackoverflow.com/questions/2181207/…
  • 啊哈,我忘了!无论如何,我们都对 OP 想要什么感到困惑。现在我们看到它只是一个 url 的文本版本。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1


【解决方案1】:

你正在做的事情很不寻常,真的......所以可能没有直接的方法。

您可以查看“url_for”选项以了解最适用的选项。 http://apidock.com/rails/ActionView/Helpers/UrlHelper/url_for

它有像“protocol”或“path_only”这样的选项,可以帮助你构建你需要的东西。

根据您的需要,如果您所做的只是删除协议,为什么不创建完整的 url 并使用 gsub,例如:

link_to @user.username, username_url(:username => @user.username).gsub("http://", '')

您还需要一条合适的路线。我刚刚猜到了你的路由,但是说在 Rails 2.3.X 中你会有类似的东西:

map.username '/:username', :controller => :users, :action => :show

【讨论】:

  • 我想我现在可以做的更简单的方法是将根 url 地址“mysite.com”存储在一个变量中,然后直接调用它。
  • 我认为没有必要。您可以使用 url_for 方法创建整个 url(或创建一个适当的命名 url),然后使用字符串逻辑(即 gsub)删除 http 位。我已将其添加到我的答案中。
  • 个人资料地址: @user.username).gsub("http://", ''), @user.username %> 即接近我想要的是。 URL 显示在没有 http:// 的页面上,但 url 没有按照我想要的方式显示。它显示 localhost:3000/?user=username 而不是 localhost:3000/username
  • 这只是意味着您需要为此网址设置正确的路由。在答案中添加了一个例如。
  • 您只想在页面上显示从路由生成的路径,但不要使用“http://”。你不需要link_to,只需将修改后的路径插入你的页面:<%= username_url(@user).gsub('http://','') %>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2021-02-14
  • 2015-05-21
  • 2021-01-01
  • 2011-04-15
  • 1970-01-01
  • 2016-03-02
相关资源
最近更新 更多