当我有这样的路径时:
user_messages_path(current_user)
它生成以下 URL:
users/1/listings
我存储在数据库用户的唯一代码中,所以我不想显示 URL
users/ID/listings
但更像
users/CODE/listings
我如何需要更新路线以使用带有用户代码的路径?
谢谢
当我有这样的路径时:
user_messages_path(current_user)
它生成以下 URL:
users/1/listings
我存储在数据库用户的唯一代码中,所以我不想显示 URL
users/ID/listings
但更像
users/CODE/listings
我如何需要更新路线以使用带有用户代码的路径?
谢谢
user_messages_path(current_user)
是一个快捷方式:
user_messages_path(current_user.to_param)
这通常会:
user_messages_path(current_user.id)
你可以:
传递你想要的任何字符串:user_messages_path('foo')
或覆盖to_param
您的模型
请注意更新负责从参数中检索对象的代码。
您可以使用自定义路由,如下所示。
get 'users/:code/:listings' => 'listings#index', as: :user_messages
然后在您的参数中,键 :code 将返回 URL 的那一部分,例如 params[:code] 在您的控制器中,您可以使用以下内容
导轨 3.2
User.find_by_code(params[:code])
导轨 4
User.where(code: params[:code])
在user.rb
def to_param
uuid # or whatever attribute you want to use instead of the id
end
在控制器中而不是User.find(params[:id])
:
User.find_by_uuid!(params[:id]) # adjust to the attribute name used in to_param