【问题标题】:ActionController::MethodNotAllowed (Only get, put, and delete requests are allowed.)ActionController::MethodNotAllowed(只允许获取、放置和删除请求。)
【发布时间】:2012-12-29 04:06:45
【问题描述】:

我在尝试提交表单时收到此错误,ActionController::MethodNotAllowed(仅允许获取、放置和删除请求。)。我的路线是这样的,

admin.resources :email_launcher

这是我的form_for,

  • form_for :email_launcher, :url => new_admin_email_launcher_path, :method => :get do |f|

这不是在表单中,而是在新视图中,我正在使用 HAML。我整天都在谷歌上搜索错误,但从未发现任何有价值的东西。任何帮助都会很棒,谢谢。

这是我的 admin_email_launcher 的 rake 路由

                          admin_email_launcher_index GET     /admin/email_launcher(.:format)                                                {:controller=>"admin/email_launcher", :action=>"index"}
                                                     POST    /admin/email_launcher(.:format)                                                {:controller=>"admin/email_launcher", :action=>"create"}
                            new_admin_email_launcher GET     /admin/email_launcher/new(.:format)                                            {:controller=>"admin/email_launcher", :action=>"new"}
                           edit_admin_email_launcher GET     /admin/email_launcher/:id/edit(.:format)                                       {:controller=>"admin/email_launcher", :action=>"edit"}
                                                     GET     /admin/email_launcher/:id(.:format)                                            {:controller=>"admin/email_launcher", :action=>"show"}
                                                     PUT     /admin/email_launcher/:id(.:format)                                            {:controller=>"admin/email_launcher", :action=>"update"}
                                                     DELETE  /admin/email_launcher/:id(.:format)                                            {:controller=>"admin/email_launcher", :action=>"destroy"}

【问题讨论】:

  • 显示应用的结构:控制器和视图的路径,视图的名称。同时运行 rake routes 并使用 admin_email_launcher 显示该部分。
  • 控制器是email_launcher_controller,我的表单是admin/email_launcher/new。它的路径是 new_admin_email_launcher_path。

标签: ruby-on-rails


【解决方案1】:

routes.rb

namespace :admin do
  resources :email_launcher
end

admin/email_launchers_controller.rb

def new
  @email_launcher = EmailLauncher.new
end

admin/email_launcher/new

<%= form_for([:admin,@email_launcher]) do |f| %>
  ...
  <%= f.submit %>
<% end -%>

它将发布新的 email_launcher。 为什么需要 GET 新操作?您已经在新页面上。

【讨论】:

  • 如果我有表单的输出,保存到另一个名为 AlertMailings 的表中。会是@email_launcher = AlertMailing.new 吗?
  • 表单的输出调用 email_launcher 控制器的create 方法。您需要在其中创建新的电子邮件启动器模型对象。这是设计使然。为什么需要新模型?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 2014-03-20
  • 2016-11-18
  • 2016-04-12
  • 1970-01-01
  • 2018-09-15
  • 2021-12-07
相关资源
最近更新 更多