我正在尝试屏蔽我的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
答案 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