Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将URL中的记录属性与Rails一起使用?_Ruby On Rails_Ruby_Ruby On Rails 3_Clean Urls - Fatal编程技术网

Ruby on rails 如何将URL中的记录属性与Rails一起使用?

Ruby on rails 如何将URL中的记录属性与Rails一起使用?,ruby-on-rails,ruby,ruby-on-rails-3,clean-urls,Ruby On Rails,Ruby,Ruby On Rails 3,Clean Urls,我如何说服rails在url中除了id之外还使用记录属性 例如,考虑一个类发布>代码>属性>代码> PubDeDATION/COD>,有一个像这样的URL会很好。 /publications/#{pub_date.year}/#{id} 虽然我可以使用to_param来更改“id”部分,但我似乎记得,生成包含“/”的参数是个坏主意。所以使用类似 def to_param "#{pub_data.year}/#{super}" end 似乎不可行。另外,对于其他url模板,这似乎是不可能

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

例如,考虑一个类<代码>发布>代码>属性>代码> PubDeDATION/COD>,有一个像

这样的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"
但我不确定如何使用自动生成的
\u url
\u路径
帮助程序。

您可以使用:as选项

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

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

是的,但是这些要求我一直明确地指定参数,当它们已经隐含在对象值中时,我想这篇文章有你需要的答案: