2009-09-17 64 views
8

我有一個用戶模型。如果我做的:如何在rails中定義自定義路徑?

def my_action 
    @user = User.new 
end 

然後

<% form_for(@user) do |f| %> 

我得到

undefined method `users_path' for #<ActionView::Base:0x1b4b878> 

這很有道理,因爲我還沒有映射它打算map.resources :users. ..但我不想做這是因爲我不需要所有的資源。

我該如何在我的路線中定義這個user_path方法?

回答

5

您還可以customize restful routes。例如在我的應用程序中,只有索引和顯示操作適用於某些控制器。在我的routes.rb文件我有一些路線是這樣的:

map.resources :announcements, :only => [:index, :show] 

您還可以使用:except,如果這是更合適的。

3

你可以這樣你的routes.rb文件的自定義路線地圖...

map.users '/users', :controller => 'user', :action => 'index' 

這給你users_path幫手,你要尋找的。

+0

感謝。這是一個慣例嗎?像索引的路線是model_path? – marcgg 2009-09-17 02:10:34

+0

這是不正確的。這不會解決表單發佈的問題,因爲它會進行錯誤的操作。 map.resources:users,:only => [:new,:create]是合適的約定。 – 2009-09-17 18:31:46

3

自從我來到這裏尋找一種方式來創建在routes.rb中的助手,在這裏是做它的方式:

get '/users/:id/' =>'users#show', :as => :user