simple_form_for没有达到正确的控制器动作

时间:2017-11-02 11:15:10

标签: ruby-on-rails ruby simple-form

我有以下路径,我希望我的表单可以点击:

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|

然而,这仍然是错误的路线。

我做错了什么?

2 个答案:

答案 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

,上面的提交按钮都链接到第一个表单