ruby-on-rails - 调用没有 ID 的新方法的路由问题

标签 ruby-on-rails ruby routes form-for

我正在尝试将编辑多个 Shift 对象的 form_tag 放在一起。我已经正确构建了表单,并且传递了正确的参数。我已验证这些参数可以在控制台中正确更新对象。但是,当我单击提交按钮时,出现错误:

ActiveRecord::RecordNotFound in ShiftsController#update_individual
Couldn't find Shift without an ID

它正在调用的 Controller 的路由看起来像这样:

map.resources :shifts, :collection => { :update_individual => :put }

ShiftsController中的方法是这样的:

def update_individual
  Shift.update(params[:shifts].keys, params[:shifts].values)
  flash[:notice] = "Schedule saved"
end

相关的表单部分是这些:

<% form_tag( update_individual_shifts_path ) do %> 
  ... (fields for...)
  <%= submit_tag "Save" %>  
<% end %>

为什么这不起作用?如果我浏览到 url:“http://localhost:3000/shifts/update_individual/5”(或与现有类次相对应的任何数字),我会收到有关未设置参数的正确错误,但是当我传递没有某种 ID 的参数时,它会出错.

如何让它停止在 URL 末尾查找 ID?

最佳答案

我认为你需要告诉表单标签助手你想使用 PUT 而不是 POST

<% form_tag( update_individual_shifts_path, :method => :put) do %>
  ... fields ....
  <%= submit_tag "Save" %>
<% end %>

关于ruby-on-rails - 调用没有 ID 的新方法的路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555847/

相关文章:

mysql - 如何在 Rails 中并行建立与多个数据库的连接?

ruby-on-rails - 删除后刷新页面

ruby-on-rails - Rails 和 OpenURI

Angular 2 实现 RouteReuseStrategy

javascript - 导致 404 的基本 nodejs 路由

ruby-on-rails - 从 Rails URL 路由中删除 Controller 名称

ruby-on-rails - 错误 : Too many redirects

javascript - 更改 twilio.js 库创建的 twilio 调用状态会挂断调用的用户

ruby-on-rails - Rails 应用程序 : Reconnect juggernaut redis after forking?

CSS 选择器不适用于 Nokogiri?