2010-02-03 50 views
4

單數和複數形式是相同的,當我嘗試點擊New方法時,我得到一個undefined_method錯誤。如何實現名爲「series」的Rails模型?

我意識到爲什麼,我意識到最簡單的解決方案是使用其他名稱。

我也知道我可以創建一個自定義的變形,但是什麼?

問題是,我真的需要像/ series,/ series/1等URL,因爲我實際上是建模......等待它......一系列事件。

使用「set」或「sequence」或其他同義詞不能表達意圖的含義。

一系列事件是一個系列而不是一個集合或一個序列。

有沒有辦法「模仿」模型?

我應該使用命名路線嗎?

任何幫助表示讚賞。

回答

0

所以:

class Series < ActiveRecord::Base 
    ... 
end 

絕對不工作?查看source系列是根據The Pluralizer內置的單一化規則之一,您應該能夠按照上述命名您的模型類系列

+0

絕對不行! – 2010-02-03 19:23:50

0

您應該可以僅通過變形來完成此操作。在config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.uncountable 'series' 
end 

重新啓動應用程序以激活。

+0

「系列」已經是內置於Inflector中的規則之一。 – 2010-02-03 16:49:16

+0

擊中的http://本地主機:3000 /系列我得到: 的ActiveRecord :: RecordNotFound在SeriesController#秀 沒有 – 2010-02-03 19:25:38

+0

好吧,我曾在我的路線文件類型...固定它的ID找不到系列並試圖再次使用指定的拐點和我得到: 的ActionController :: RoutingError在系列#新 展示應用/視圖/系列/ new.html.erb在行#3提出: SERIES_URL未能產生從{:action =>「show」,:controller =>「series」} - 您可能有不明確的路線,或者您可能需要爲此路線提供其他參數。 content_url具有以下必需的參數:[「series」,:id] - 是否都滿意? – 2010-02-03 19:28:45

1

假設你使用script/generate scaffold series構建模型控制器等,你應該有一個像

map.resources :series 

在/config/routes.rb線如果將其更改爲

map.series_index '/series',:controller=>'series',:action=>:index 
map.resource :series 

它將工作。或者您可以添加Eric Hill的變調初始值設定項。

+0

當我這樣做我得到: NoMethodError在系列#指數 顯示應用程序/視圖/系列/ index.html.erb在行#9提出: 你有一個零對象時,你沒有想到它! 您可能預期了Array的一個實例。 評估nil時發生錯誤每個 – 2010-02-03 19:23:12

+0

你有什麼代碼?在原始腳手架中,這只是Show的一個鏈接。 – BaroqueBobcat 2010-02-03 21:31:18

+0

我生成了腳手架,耙了數據庫,編輯routes.rb你的建議,重新啓動服務器,並打/系列,並得到該錯誤。 沒有編輯/改變任何東西。 – 2010-02-03 21:42:55