2011-03-03 67 views
0

沒有人知道如何使用表單部分來創建和更新關於對象的數據嗎?我的更新方法似乎工作,但我不能創建一個新的對象。每當我碰到'添加新廣告'時,我得到這個錯誤:[ActionController:在分類#新路由錯誤沒有路由匹配{:控制器=>分類}]。下面是部分形式的代碼:錯誤指向第一行:在rails中使用部分表單時發生路由錯誤

<%= form_for(@classified) do |f| %> 
    <p> 
    <%= f.label :title %><br/> 
    <%= f.text_field :title %> 
    </p> 
    <p> 
    <%= f.label :price %><br/> 
    <%= f.text_field :price %> 
    </p> 
    <p> 
    <%= f.label :location %><br/> 
    <%= f.text_field :location %> 
    </p> 
    <%= f.label :description %><br/> 
    <%= f.text_area :description %> 
    <%= f.label :email %><br/> 
    <%= f.text_field :email %> 
    <%= f.submit %> 
<% end %> 
<%= link_to 'Back', {:action => 'list'} %> 

這裏是我的新的,在分類控制器類編輯和更新方法:

def new 
    @classified=Classified.new 
end 

這裏是'def create'方法:

def create 
    @classified = Classified.new(params[:classified]) 
    if @classified.save 
    redirect_to :action => 'list' 
    else 
    render :action => 'new' 
    end 
end 

我懷疑問題出在我的config/routes.rb中。我已經有這樣一行:

resources :classified 

我也提出:

root :to => "Classified#list" 
root :to => "Classified#new" 
root :to => "Classified#show" 
root :to => "Classified#edit" 
root :to => "Classified#form 

可能的問題是用的routes.rb文件。它是如何與更新方法一起使用而不是新方法的?請幫忙。我嘗試過所有可能的技巧都無濟於事。我會很高興。在此先感謝

回答

1

我想知道您的rake routes的結果,因爲您使用單數爲您的控制器分類。

難道是classifieds,S在你所有的路線?我不是那麼確定,因爲resources: classified我猜是腳手架,所以它應該是好的,那麼你錯過了最後一行的''',但這可能是一個錯字

1

我建議有一個複數名稱對於資源,因爲這是大多數資源的規範:

resources :classifieds 

您還需要將控制器的名稱和類名稱更改爲classifieds_controllerClassifiedsController

此外,您的命名路由應該小寫(儘管你應該完全擺脫這些路線):

root :to => "classifieds#list" 

擺脫root路線。 resources行將創建您需要的所有路線。而且你只能在routes.rb中有一條根路由,並且應該指向你的主頁控制器#操作。

如果你有一個表單的動作,那麼你不需要這個..只是提到這個,因爲你創建了「Classified#表單」的路由。控制器操作對於部分來說不是必需的。

您的新建和創建方法和窗體乍看起來很好。先嚐試重新修改路由,如果仍然存在問題,請從命令行運行rake routes,並在問題中發佈輸出,並留下我對此答案的評論,我會看看我是否可以幫助您弄清楚。

首先閱讀: http://guides.rubyonrails.org/routing.html

+0

那是沒有用無人關注三個小時,我們去編輯,並在同一時間來回答吧... :) – ecoologic 2011-03-03 15:36:23

+0

我看到了一個新的答案被張貼在我完成這個答案。我想我會提交提交,因爲我已經投入了一些時間;-) – johnmcaliley 2011-03-04 02:51:50