在Rails中屏蔽链接

时间:2015-11-17 22:00:42

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

我正在尝试屏蔽我的rails应用程序中的链接,因为它链接到不同的网站。我将在下面解释一个简单的场景:

目前,当我将鼠标悬停在链接上时

http://www.testexampleoutsideurl.com/news/posts/1234

我正试图让它显示

http://www.myapplication.com/offer/123

我在我的模型上使用了带有friendly_id的基本导轨脚手架设置。我之前问过这个问题,但它给了我错误。请参阅下面的代码。

错误

  

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

offers_controller.rb

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

的routes.rb

get "offers/:slug", to: "offers#show"

offer.rb

class Offer < ActiveRecord::Base
    belongs_to :category
  validates :category, presence: true

  extend FriendlyId
  friendly_id :title, use: :slugged

  mount_uploader :merchantImg, MerchantImgUploader
  mount_uploader :image, ImageUploader
end

非常感谢任何帮助!

更新

offers_controller.rb

  def show
    link = Offer.friendly.find(params[:slug])
    redirect_to link.url
  end

的routes.rb

get "offers/:slug", to: "offers#show"

控制台错误

  

找不到没有ID的优惠

22:36:36 web.1    | [28829] 127.0.0.1 - - [17/Nov/2015:22:36:36 +0000] "GET /offers/blahihaidh HTTP/1.1" 404 118512 0.2532

2 个答案:

答案 0 :(得分:2)

错误说:

UndefinedColumn: ERROR: column offers.friendly_id does not exist

因此您的表没有名为friendly_id的列,因此查询崩溃。

答案 1 :(得分:1)

看起来你正在使用friendly_id gem。 friendly_id README有以下示例:

User.friendly.find(params[:id])

...但您的代码如下所示:

link = Offer.find_by!(friendly_id: params[:slug])

您的代码失败了,因为您正在尝试使用ActiveRecord find_by!方法,该方法将哈希的键作为参数作为参数,其键应该是列名,但您的表没有{{1列。相反,你应该这样做,因为friendly_id README指示并使用类似这样的东西:

friendly_id
相关问题