1
我有一个模型“公司”,它有:id,:name和有时:domain,并且有这样的路线:如果一个公司有:domain,那么它是/公司/:域,否则它的/公司/:ID 有你在我的routes.rb文件这样的路线:从导轨切换到导轨3.1后的路径错误3.0.9
get "/companies/:id(.:format)", :controller => "companies", :action => "show", :as => "company", :constraints => { :id => /\d+/ }
get "/companies/:domain(.:format)", :controller => "companies", :action => "show", :as => "company"
还有的在companies_helper.rb生成路由的helper方法:
def company_c_path(c)
company_path(c.domain.present? ? c.domain : c.id)
end
它在rails 3.0.9(使用mysql 0.2.7)中工作,但不在rails 3.1.0中(mysql> = 0.3)。最后一种情况的问题是
No route matches {:action=>"show", :controller=>"companies"}
更具体,让我们考虑公司:ID = 1:域=“拉拉”。当我们向/ companies/1发送请求时出现错误。 Rails的成功解析器申请(PARAMS = {:ID => 1}),然后在我看来有
<%= link_to @company.name, company_c_path(@company) %>
这里似乎轨找不到company_path方法。但是,如果我们发送/公司/拉拉,一切正常。
谢谢,我补充说,但没有任何变化。轨道3.0.9工程和轨道3.1.0不在/ companies/1路径上。两者均适用于/ companies/lala路径。 – Kasheftin
在控制台中试一下company_path(:id => 10)的方法,看它是否有效。如果是这样,错误在别处。 –