4

處理表單我有一個形式,我的檔案編輯觀點與此行的開頭:與單表繼承

<% form_for @profile, :html => { :multipart => true } do |f| %> 

資料進行單表繼承和兩個子類檔案::藝術家和個人資料::監聽器。

當我嘗試訪問編輯查看配置文件,我得到這個錯誤:

NoMethodError in Profiles#edit 

Showing /rubyprograms/dreamstill/app/views/profiles/edit.html.erb where line #1 raised: 

undefined method `profile_artist_path' for #<#<Class:0x103359a18>:0x1033560c0> 

,其中線1的代碼,我上面貼在表格的行。我該如何解決這個錯誤?

UPDATE:

我將此代碼添加到我的個人資料型號:

def self.inherited(child) 
    child.instance_eval do 
    def model_name 
     Vehicle.model_name 
    end 
    end 
    super 
end 

現在我的錯誤已更改爲:

NameError in Profiles#edit 

Showing /rubyprograms/dreamstill/app/views/profiles/edit.html.erb where line #1 raised: 

uninitialized constant Profile::Vehicle 

更新2:

我改變表格的第一行爲:

​​

,並提交按鈕<%= f.submit :profile %>

現在我只是得到一個路線錯誤...

+0

'require'vehicle''? – lebreeze 2011-03-28 06:58:52

+0

http://stackoverflow.com/questions/5246767/sti-one-controller/5252136#5252136 – fl00r 2011-03-28 07:00:44

+0

此外,它仍然像一個路由錯誤:'undefined方法profile_artist_path' – lebreeze 2011-03-28 07:00:49

回答

3

VehileProfile

def self.inherited(child) 
    child.instance_eval do 
    def model_name 
     Profile.model_name 
    end 
    end 
    super 
end 

def self.model_name 
    name = "profile" 
    name.instance_eval do 
    def plural; pluralize; end 
    def singular; singularize; end 
    def i18n_key; singularize; end 
    def human(*args); singularize; end 
    end 
    return name 
end 

UPDATE

一個實際的問題是在形式。您應該添加:method => :put

<%= form_for(@profile, :html => { :multipart => true, :method => :put }) do |f| %> 
+0

nah配置文件是父類,而不是藝術家 – 2011-03-28 07:03:19

+0

確定然後使用配置文件 – fl00r 2011-03-28 07:03:41

+0

我要發佈我的表單更改爲... – 2011-03-28 07:05:11