0

当我有这样的路径时:

user_messages_path(current_user)

它生成以下 URL:

users/1/listings

我存储在数据库用户的唯一代码中,所以我不想显示 URL

users/ID/listings

但更像

users/CODE/listings

我如何需要更新路线以使用带有用户代码的路径?

谢谢

4

3 回答 3

1
user_messages_path(current_user)

是一个快捷方式:

user_messages_path(current_user.to_param)

这通常会:

user_messages_path(current_user.id)

你可以:

  • 传递你想要的任何字符串:user_messages_path('foo')

  • 或覆盖to_param您的模型

请注意更新负责从参数中检索对象的代码。

于 2013-10-08T13:14:38.447 回答
0

您可以使用自定义路由,如下所示。

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])
于 2013-10-08T14:53:21.030 回答
0

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 
于 2013-10-08T13:14:30.710 回答