如何通过使用列的值作为 rails 中的参数来创建 URL

How to create URL by using value of a column as param in rails

我有一个收藏夹table,每个visitor_id都是一个随机字符串

         Favorites
-------------------------
| visitor_id | place_id |
-------------------------
| aab1       |     1    |
-------------------------
| aab2       |     2    |
-------------------------
| aab3       |     3    |
-------------------------
| ....       |   ...    |
-------------------------

现在,我想为每个 visitor_id 创建一个 url 到 link。我要创建的 url 看起来像这样:

favorites/visitor/:visitor_id

例如:

favorites/visitor/aab1
favorites/visitor/aab2
favorites/visitor/aab3

我应该在 route.rb 和 favorites_controller.rb 或 favorite.rb 模型中编写什么正确的语法来实现这种情况?以及如何让视图根据 URL?

显示 visitor_id

例如:

favorites/visitor/aab1  ==> Display aab1 in view
favorites/visitor/aab2  ==> Display aab2 in view
favorites/visitor/aab3  ==> Display aab3 in view

PS: 我没有访客控制器、模型或 table。提前致谢!

下面的代码应该可以工作

#routes.rb
get "/favorites/visitor/:visitor_id", to: 'favorites#visitor', as: 'favorites_visitor'

上面的路线带你去 url 像 favorites/visitor/1 favorites/visitor/aab1, 但正如你想要的那样favorites/visitor/aab1 你应该使用 friendly_id gem 来生成那些 urls.

此外,上述路由需要一个名为 visitor 的方法,定义在 favorites_controller.rb

注:

我完全忘记了 visitor_id 的值是一个 随机字符串 ,所以你不需要 friendly_id gem。我划线以反映它。

更新:

How can I create a link to link to a specific visitor_id

您可以使用下面的 link,

<%= link_to "Visitor", favorites_visitor_path(@visitor) %>

假设您在 favorites_controller.rb

的特定方法中定义了 @visitor