【问题标题】:Rails 3.0.9: abstracting cart routesRails 3.0.9:抽象购物车路线
【发布时间】:2011-08-04 15:32:32
【问题描述】:

我正在开发一个电子商务 Rails 应用程序,我正在尝试抽象我的购物车的路线,尤其是 id。

购物车表:

  • id :int,非空,主键
  • hash_id :string(255)

我需要 hash_id 是呈现购物车控制器的显示操作的唯一方法。

我目前正在尝试使用以下代码来完成此操作:

#routes.rb
match 'carts/:hash_id' => 'carts#show'

#carts_controller.rb
def show
    @cart = Cart.find(params[:hash_id])
end

使用此代码,我仍然可以访问 example.com/carts/1 并且显示工作正常,但是当我尝试访问 example.com/carts/hash_id 时,它会引发 ActiveRecord::RecordNotFound 异常。

因此,假设有一个 :id => 1 和 :hash_id => 2414e80f5d9ccaf3 的购物车,我的预期行为将是 example.com/carts/2414e80f5d9ccaf3 将为 id 的购物车呈现购物车控制器的显示操作1.

【问题讨论】:

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


    【解决方案1】:

    试试@cart = Cart.find_by_hash_id(params[:hash_id])

    【讨论】:

    • 就 example/carts/hash_id 渲染购物车显示动作而言,这就像一个魅力,但我需要 example/carts/id 与 hash_id 一起工作失败。
    • 实际上我最终完全改变了我的方法,这很简单。感谢您快速简洁的回答。
    • 哦很酷,但是我认为你是对的,通过从根目录更改默认行为有更好的方法,但我不知道如何。好吧,您以后可以随时重构它:D
    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多