使用has_many自定义rails路由不能与form_for一起使用

时间:2016-01-04 08:16:47

标签: ruby-on-rails ruby-on-rails-4 routes

尝试使用has_many

为rails创建自定义路由

这是我的动漫'

的模型
has_many :anime_categories, dependent: :destroy

这是我做的路线

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

问题是当我访问/动漫/动漫名称/类别/新时我从form_for获得了no方法错误:

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 

无法确定导致问题的原因。我有新的&#39;动漫类别控制器中的方法,所以我认为它是一个路由问题。

我想保持url格式的方式。我怎么能这样做?

由于

1 个答案:

答案 0 :(得分:1)

你没有在form_for中提到过方法,所以在你的情况下,默认情况下它将作为post方法。您定义的路线是:get方法。

在form_for上你应该指定创建方法路径而不是post方法路径。

我不确定您的用例,但是如果您想重定向到新的

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