没有路线匹配[POST]" / services / new"

时间:2014-12-28 19:04:10

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

我正在使用带有改革gem的表单对象来构建服务表单。

苗条的形式:

= simple_form_for [:admin, @service_form], url: services_path

路线:

    services_path        GET    /services(.:format)             services#index
                         POST   /services(.:format)             services#create
    new_service_path     GET    /services/novo(.:format)        services#new
    edit_service_path    GET    /services/:id/editar(.:format)  services#edit
    service_path         GET    /services/:id(.:format)         services#show
                         PATCH  /services/:id(.:format)         services#update
                         PUT    /services/:id(.:format)         services#update

controller - new action :( ServiceFormObject是服务的表单对象类)

def new
    service = Service.new        
    @service_form = ServiceFormObject.new(service)
end

尽管如此,我得到的是没有路线匹配[POST]“/ services / new”。

我不知道为什么它在“/ services / new”中搜索POST而不是“/ services”

任何解决方案?

- Rails 4,Reform,Simple_form,slim -

更新

我正在使用相同的表单进行编辑/更新,因此硬编码的URL路径不是理想的解决方案。

我创建了这个方法:

 def is_persisted?
     if self.persisted?
       "service/#{@service_form.id}"
     else
       '/services'
     end 
 end

我可以在url上使用它,就像这样:

url: @service_form.is_persisted?

1 个答案:

答案 0 :(得分:1)

如果您将表单更改为此语法,它是否有效?

= simple_form_for [:admin, @service_form], url:"/services"

修改 @Richard Seviora是正确的,硬编码的路径并不理想。尝试将“as”添加到POST路由中。

post 'services' => 'services#create', as: "create_service"

当您运行rake路由时,POST是否有路径?