2016-01-04 34 views
0

試圖讓Rails的自定義路線與的has_many工作路由定製導軌和的has_many不是的form_for

這是我的模式「Animes」

has_many :anime_categories, dependent: :destroy 

這是我做了

路線
match 'animes/:id/categories/new' => 'anime_categories#new', :via => :get 

問題是,當我訪問/ animes/animename /分類/新我越來越這是從養了沒有方法錯誤的form_for:

NoMethodError in AnimeCategories#new 
Showing  

app/views/anime_categories/new.html.erb where line #11 raised: 

undefined method `anime_categories_path' for #<# <Class:0x007fb643147d40>:0x007fb6431365b8> 

這裏是線11

<%= form_for(@anime_category) do |f| %> 

AnimeCategory新方法:

class AnimeCategoriesController < ApplicationController 
def new 

@anime = Anime.friendly.find(params[:id]) 
@anime_category = Anime.friendly.find(@anime.id).anime_categories.new 

end 

看不出究竟是什麼導致了問題。我在動畫類別控制器中有'新'方法,所以我認爲它是一個路由問題。

我想保持它的格式。我怎樣才能做到這一點?

感謝

回答

1

您還沒有的form_for提到的方法,所以在你的情況下,它會把它默認爲POST方法。您定義的路線是:get方法。

而在form_for上,您應該指定create method path而不是post method path。

我不知道關於你的使用情況,但如果你想重定向到新的

<%= form_for(@anime_category, method: :get) do |f| %> 
+0

我剛剛被使用的資源的路線。對於表單我雖然它是一個'新'的方法,並在默認情況下'創建'方法的一個職位,因爲這我也有路線'匹配'動漫/:id/categories'=>'anime_categories#create' ,:via =>:post'。爲什麼資源:anime_categories具有該設置,如果它不是默認設置?和添加的get說明符不起作用。仍然是完全相同的錯誤 – Rob