我正在使用带有改革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?
答案 0 :(得分:1)
如果您将表单更改为此语法,它是否有效?
= simple_form_for [:admin, @service_form], url:"/services"
修改强> @Richard Seviora是正确的,硬编码的路径并不理想。尝试将“as”添加到POST路由中。
post 'services' => 'services#create', as: "create_service"
当您运行rake路由时,POST是否有路径?