我有以下路径,我希望我的表单可以点击:
namespace :admin
resources :jobs do
member do
patch 'update_attributes', to: 'jobs#update_attributes', as: 'update_attributes'
当我运行rake路线时,这会给出:
update_attributes_admin_job PATCH /admin/jobs/:id/update_attributes(.:format) admin/jobs#update_attributes
我的简单形式:
= simple_form_for job, url: update_attributes_admin_job_path(job) do |g|
.panel.panel-default
.panel-heading
Job Summary:
.pull-right
= g.submit
.panel-body
#job_edit_contacts_component
.clearfix
%center
= g.association :admin, as: :select, collection: Admin.all, label: 'Lead Admin'
%table.table.table-striped.table-hover
%thead
%tr
%th Select
%th Attribute
%tbody
- status_attributes.each do |attribute|
%tr
%td
= check_box_tag "attributes[]", attribute, job.send(attribute)
%td
= attribute.to_s.humanize
当我点击提交时,服务器显示:
Started PATCH "/admin/jobs/5846" for ::1 at 2017-11-02 11:06:13 +0000
Processing by Admin::JobsController#update as HTML
我试过简单地做
= simple_form_for update_attributes_admin_job_path(job) do |g|
然而,这仍然是错误的路线。
我做错了什么?
答案 0 :(得分:1)
首先,您应该保留默认的Rails CRUD模型。 update_attributes的标准路由已在resources
来电中出现,其名称为update
。现在你做了一些无用的过度编码来定义你的自定义update_attributes
方法。
路线:
namespace :admin do
resources :jobs
end
查看:
= simple_form_for [:admin, job] do |g|
如果您确实需要此自定义update_attributes操作(并且我95%确定您没有),那么请评论我的帖子并提供其他详细信息。
答案 1 :(得分:0)
我的表单嵌套在另一个表单中......在尝试第二个提交按钮并看到它没有工作之前我没有意识到。因此,无论g.submit
,上面的提交按钮都链接到第一个表单