【问题标题】:How to use record attributes in URLs with Rails?如何在带有 Rails 的 URL 中使用记录属性?
【发布时间】:2012-08-15 08:25:35
【问题描述】:

除了 id 之外,我如何说服 rails 在 url 中使用记录属性?

例如,考虑一个带有属性pub_date 的类Publication,最好有一个类似的url

 /publications/#{pub_date.year}/#{id}

虽然我可以使用to_param 来更改“id”部分,但我似乎记得生成带有“/”的参数是个坏主意。所以使用类似的东西

def to_param
  "#{pub_data.year}/#{super}"
end

似乎不可行。此外,使用其他 URL 模板似乎是不可能的,例如如果我想在 url 的另一部分使用该属性,例如:

 /#{pub_date.year}/publications/#{id}

我可以定义匹配的路由,例如

  match "/xxx/:foo/:bar" => "ctrlr#act"

但我不确定如何使用自动生成的 _url_path 助手。

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 clean-urls


【解决方案1】:

你可以使用 :as 选项

get "/xxx/:foo/:bar" => "ctrlr#act", :as => :xxx

然后

xxx_path(:foo => 'asd', :bar => 'qwe') # "/xxx/asd/qwe"

【讨论】:

  • 是的,但是这些需要我一直明确指定参数,当它们已经隐含在对象值中时,我认为
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多