1

我收到以下错误

No route matches [POST] "/events"

使用此设置:

配置/路由.rb

namespace :admin do
  #...
  resources :events
  #...
end

(...)admin/events_controller.rb

class Admin::EventsController < Admin::AdminController
  def index
    @events = Event.all
  end

  def new
    @event = Event.new
  end

  def create
    @event = Event.new(params[:event])

    if @event.save
      redirect_to [:admin, admin_events_url]
    else
      render :action => "new"
    end
  end

  def edit
    @event = Event.find(params[:id])
  end
end

(...)admin/events/_form.html.erb

<%= form_for([:admin, @event]) do |f| %>

我无法弄清楚我做错了什么!

更新

当我在创建新事件条目时尝试发布数据时收到此错误


更新 2

里面的开始表单标签events/new

<form accept-charset="UTF-8" action="/admin/events" enctype="multipart/form-data" id="new_event" method="post">

结果rake routes

 admin_events GET    /admin/events(.:format)             admin/events#index
              POST   /admin/events(.:format)             admin/events#create

导航到/admin/events/使用GET效果很好。


更新 3

它在 Ruby 1.9.3、Rails 3.2 和 Mongrel 的 Windows 8 x64 位上运行良好。它不适用于 Linux 服务器(主机)上的 Ruby 1.8.7、Rails 3.2 和 Phusion Passenger。

更新 4

哦。multipart/form-data如果您向它发送带有编码的表单,Rails 似乎不太高兴!删除文件上传解决了这个问题。

4

2 回答 2

2

对于我来说,关于您的控制器的唯一值得怀疑的是您的重定向。你应该能够做到:

redirect_to admin_events_path
于 2012-11-12T21:39:40.913 回答
1

请尝试以这种方式设置您的表单:

form_for(@event, { url: admin_events_path, method: "POST" }) do
于 2012-11-12T21:29:41.473 回答