Ruby on rails 如何指定命名管线应使用模型';s列及其url和path函数?

Ruby on rails 如何指定命名管线应使用模型';s列及其url和path函数?,ruby-on-rails,named-routing,Ruby On Rails,Named Routing,我有一个带有id和title列的Posts模型 我的路线(rails 2.3.8)设置如下: map.post ':title/:id', :controller => 'posts', :action => 'show' 在识别URL和显式生成URL时,如 post_url(:title => 'foo', :id => 123) 结果显示为/foo/123。我希望能打电话给你 p = Post.create!(:title => 'foo') # let's

我有一个带有id和title列的Posts模型

我的路线(rails 2.3.8)设置如下:

map.post ':title/:id', :controller => 'posts', :action => 'show'
在识别URL和显式生成URL时,如

post_url(:title => 'foo', :id => 123)
结果显示为/foo/123。我希望能打电话给你

p = Post.create!(:title => 'foo') # let's assume it gets ID 123
url_for(p)
然后走同样的路。但我有一个错误:

post_url failed to generate from {:action=>"show", :controller=>"posts",
    :title=>#<Post id: 123 title: "foo" created_at: ...
post\u url未能从{:action=>“show”,:controller=>“posts”生成,

:title=>#当您声明路由时,调用它的方式需要一定数量的参数,并且必须以正确的顺序指定这些参数,否则会造成混乱

以下是一些典型路线:

map.none '/', :controller => 'none', :action => 'index'
map.one '/:one_id', :controller => 'one', :action => 'show'
map.two '/:one_id/:two_id', :controller => 'two', :action => 'show'
map.three '/:one_id/:two_id/:three_id', :controller => 'three', :action => 'show'
当您要调用它们时,需要指定您在路由中输入的参数,否则它将无效:

none_path
one_path(one)
two_path(one, two)
three_path(one, two, three)
您可以在末尾包含可选参数。通常情况下,将自动布线方法和手动布线方法混合搭配是个坏主意:

# Using named routes
one_path(one) # /one/1
one_path(one, :two_id => two) # /one/1?two_id=2
one_path(:one_id => one) # Awkward format for same

# Using automatic routing
url_for(:controller => 'one', :action => 'show', :one_id => one) # /one/1
括号中的路径参数,如
(:format)
是可选的,但最好避免使用这些参数,除非存在安全默认值

通过在路由中包含两个参数,而不是简单的
:id
,您可能会绊倒
url\u for
方法