Rails中的隐藏链接

时间:2015-10-21 13:40:22

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

我想在Rails中隐藏我的传出链接,但找不到任何人在Wordpress& PHP。我猜它要么是愚蠢容易的,要么是愚蠢的,很想澄清。

我正在努力实现这样的链接:

http://www.railsproject.com/posts/test-post

但点击重定向到:

http://www.test-webpage.com/12341/post-at-another-site

目前我的网址看起来有点难看,搜索引擎优化也很讨厌它。

任何帮助都会很棒!

编辑错误

  

PG :: UndefinedColumn:错误:列offers.friendly_id不存在   第1行:选择“要约”。* FROM“提供”WHERE“要约”。“friendly_id ...   ^:SELECT“offer”。* FROM“offers”WHERE“offers”。“friendly_id”IS   NULL LIMIT 1

  # GET /offers/1.json
  def show
    link = Offer.find_by!(friendly_id: params[:slug])
    redirect_to link.url
  end

1 个答案:

答案 0 :(得分:1)

您只需将slug和传出的URL存储在数据库中,然后在有人访问该链接时匹配它们。

假设名为Post的模型具有两个属性friendly_idurl。您可以设置如下路线:

# config/routes.rb
get "posts/:slug", to: "posts#show"

在你的控制器中:

# app/controller/posts_controller.rb
def show
  link = Post.find_by!(friendly_id: params[:slug])
  redirect_to link.url
end

请注意,链接需要以http://https://开头,否则redirect_to来电将失败。