cmw*_*cmw 7 ruby-on-rails ruby-on-rails-3
我正在尝试自定义我的节目路线...我不希望用户能够通过以下方式查看项目:id ...
我有一个销售模型,展示路线是:
sale GET /sales/:id(.:format) sales#show
Run Code Online (Sandbox Code Playgroud)
但是,我不希望用户能够通过id查看销售,相反,我希望它是:
sale GET /sales/:guid(.:format) sales#show
Run Code Online (Sandbox Code Playgroud)
guid是我在创建对象时生成的uuid:
def populate_guid
self.guid = SecureRandom.uuid()
end
Run Code Online (Sandbox Code Playgroud)
小智 10
在config/routes.rb中
get '/sales/:guid', to: 'sales#show'
Run Code Online (Sandbox Code Playgroud)
或者如果您使用rails 4,您可以:
resources :sales, param: :guid
Run Code Online (Sandbox Code Playgroud)
在控制器中
def show
@sale = Sale.find(params[:guid])
end
Run Code Online (Sandbox Code Playgroud)
您可以在routes.rb中定义自定义路由:
get "/sales/:guid", :to => "sales#show"
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器中,对于显示操作,您可以从guidurl 中传递的中找到您想要的销售:
def show
@sale = Sale.find_by_guid(params[:guid])
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |