如何在rails上的ruby中生成动态URL?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在rails上的ruby中生成动态URL?相关的知识,希望对你有一定的参考价值。

我在一个控制器中有一个xyz方法。现在我有一个url'buy-m-get-n',它将调用xyz动作。

get "/buy-m-get-n" => "store#xyz"

现在我想为不同的m和n值调用相同的动作。例如:'buy-2-get-3','buy-4-get-5'。 m,n <= 10

我在routes.rb中试过这个,

[1..10].each do |x|
  [1..10].each do |y|
    get "/buy-#{x}-get-#{y}" => "store#xyz"
  end
end

但它给了我新的网址,

/buy-1..10-get-1..10-free
答案

如果n将始终固定为1到10,请删除括号。 [1..10]是Range的阵列,1..10Range

1..10.each do |x|
  1..10.each do |y|
    get "/buy-#{x}-get-#{y}" => "store#xyz"
  end
end

Range documentation.

另一答案

你的方式不是标准方式。

为什么你不这样做: -

get "/buy/:m/get/:n" => "store#xyz", as: :buy_get

通过这种方式,您可以将此网址用于m和n的不同值,例如: -

buy_get_path(m: 1, n: 2) #this will generate url like - /buy/:1/get/:2
buy_get_path(m: 3, n: 4) #this will generate url like - /buy/:3/get/:4

as per your requirement: -

get 'buy-:m-get-:n', to: 'articles#buy_get', as: :buy_get

你可以用它作为: -

buy_get_path(m: 1, n: 2) # this will generate url like: - buy-1-get-2

以上是关于如何在rails上的ruby中生成动态URL?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby on Rails Web 应用程序中生成图表的首选方式是啥?

如何在列表中生成动态 url?

如何在 Ruby 中生成唯一的六位字母数字代码

在 ruby​​/ActiveRecord 中生成类似 Instagram 或 Youtube 的不可猜测的字符串 ID

如何在 django 中生成 url

如何在 Ruby 中生成 a 和 b 之间的随机数?