2013-02-27 25 views
1

我需要爲單詞「底盤」定義一個變形,其中同一個單詞定義單數和複數,我真的很困難。 我想我在那裏與初始化/是inflections.rb定義Rails 3.x如何正確定義拐點

ActiveSupport::Inflector.inflections do |inflect| 
# inflect.plural /^(ox)$/i, '\1en' 
# inflect.singular /^(ox)en/i, '\1' 
# inflect.irregular 'person', 'people' 
# inflect.uncountable %w(fish sheep) 
    inflect.uncountable(/.*chassis.*/i) 
end 

以例子inflect.uncountable %w(fish sheep)的鈔票。我試圖用inflect.uncountable%W(底盤),當我第一次設立了腳手架但沒」因爲它沒有考慮路徑中的主要部分,並導致關係和car_chassis和chassis_lookup等其他表的問題。

查看了Stack Overflow中類似問題的答案後,我終於想出了inflect.uncountable(/.*chassis.*/i)這似乎照顧腳手架,但我遇到了一個問題,其中<%= link_to "Chassis", admin_chassis_url%>給了我一個沒有路線的節目行動錯誤。

ActionController::RoutingError - No route matches {:action=>"show", :controller=>"admin/chassis"} 

,因爲我想index動作,所以我不傳遞對象的路徑,但Rails的顯然是想我請求show動作

對正則表達式的

其他的例子這是合理的
# inflect.plural /^(ox)$/i, '\1en' 
# inflect.singular /^(ox)en/i, '\1' 

對我來說只是完整的gobbledygook和學習正則表達式需要一輩子的學習,我沒有傾向或理智,讓我的頭和軌道文檔http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html變形是非常坦率的道路客位。

我顯然沒有得到權利。任何人都可以給我一個完整的解決方案,至於如何我應該爲我和其他人定義一個詞「底盤」的變化,因爲我沒有找到以前的答案提供了一個完整和適當的解決方案

回答

1

你的變形似乎是正確的。 檢查'耙路線'告訴你什麼。在我的情況下,它足夠聰明地檢測到複數和單一形式的機箱是相同的,所以它爲admin_chassis生成了admin_chassis_index而不是admin_chassis。也許,對你來說也是如此。這是我做過什麼:

在配置/ routes.rb中

namespace :admin do 
    resources :chassis 
end 

運行 '耙路線' 給出(注意第一個路徑):

admin_chassis_index GET /admin/chassis(.:format)   admin/chassis#index 
        POST /admin/chassis(.:format)   admin/chassis#create 
    new_admin_chassis GET /admin/chassis/new(.:format)  admin/chassis#new 
edit_admin_chassis GET /admin/chassis/:id/edit(.:format) admin/chassis#edit 
     admin_chassis GET /admin/chassis/:id(.:format)  admin/chassis#show 
        PUT /admin/chassis/:id(.:format)  admin/chassis#update 
        DELETE /admin/chassis/:id(.:format)  admin/chassis#destroy 

所以,#INDEX我d需要撥打:

<%= link_to "Chassis", admin_chassis_index_url%> 
+0

太棒了。上帝知道我爲什麼沒有檢查'耙路線'我已經把頭髮撕掉了好幾天 – jamesc 2013-02-27 23:31:09