Rails路由配置错误

时间:2012-11-12 21:13:58

标签: ruby-on-rails ruby ruby-on-rails-3.2

我收到以下错误

No route matches [POST] "/events"

使用此设置:

配置/ routes.rb中

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

(...)管理/ 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

(...)管理/事件/ _form.html.erb

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

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

更新

当我在创建新事件条目时尝试POST数据时出现此错误


更新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似乎不是很高兴!删除文件上传修复了此问题。

2 个答案:

答案 0 :(得分:2)

对于它的价值而言,关于你的控制器对我来说唯一可疑的是你的重定向。你应该能够做到:

redirect_to admin_events_path

答案 1 :(得分:1)

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

form_for(@event, { url: admin_events_path, method: "POST" }) do