7

我正在尝试自定义我的显示路线...我不希望用户能够通过 :id 查看项目...

我有一个销售模型,走秀路线是:

sale GET    /sales/:id(.:format)     sales#show

但是,我不希望用户能够按 id 查看销售额,相反,我希望它是:

sale GET    /sales/:guid(.:format)     sales#show

guid 是我在创建对象时生成的 uuid:

def populate_guid
    self.guid = SecureRandom.uuid()
end
4

2 回答 2

11

在 config/routes.rb

get '/sales/:guid', to: 'sales#show'

或者,如果您使用 rails 4,您可以:

resources :sales, param: :guid

在控制器中

def show
  @sale = Sale.find(params[:guid])
end
于 2013-11-02T21:34:09.110 回答
1

您可以在您的 routes.rb 中定义自定义路由:

get "/sales/:guid", :to => "sales#show"

然后在您的控制器中,对于显示操作,您可以从guidurl 中传递的 中找到您想要的销售:

def show
  @sale = Sale.find_by_guid(params[:guid])
end
于 2013-11-02T21:32:10.303 回答