由于表单,Rails 3'新'动作作为索引页面

时间:2011-12-07 01:57:35

标签: ruby-on-rails

我有一个小应用程序,其中索引页面是一个指示用户输入电子邮件的表单,我已经更改了我的路由,以便root_path是呈现我的表单的“新”操作:

Oa::Application.routes.draw do
  resources :signups
  match "/confirm", :to => "pages#confirm"
  root :to => 'signups#new'
end

这个工作正常,当我提交表格时工作正常。当我在根页面上提交并导致验证错误时,地址栏上有url localhost:3000 / signups并显示我的验证错误,这也很好但是如果我要手动访问http://localhost:3000/signups它会给我错误“无法找到SignupsController的动作'索引'”。如果我直接访问http://localhost:3000/signups,如果我创建了'index'动作并且redirect_to root_path以便我没有收到“为SignupsController找不到”动作'索引',那会没关系吗?这是正确的方法吗?

class SignupsController < ApplicationController
  def index
    redirect_to root_path
  end

  def new
    @signup = Signup.new
  end

  def create
@signup = Signup.new(params[:signup])
if @signup.save
      UserMailer.registration_confirmation(@signup).deliver
  flash[:notice] = "Signup created successfully."
  redirect_to confirm_path
else
  render :action => "new"
    end
  end
end

谢谢!

Ĵ

2 个答案:

答案 0 :(得分:1)

做这样的事情:

post '/' => 'signups#create'
root to: 'signups#new'

请勿使用resources :signups

答案 1 :(得分:1)

http://localhost:3000/signups给我一个错误的原因&#34;行动&#39;索引&#39;无法找到SignupsController&#34;是因为:

第一个匹配的&#39;使用路线 所以这一切:

match "/confirm", :to => "pages#confirm"
root :to => 'signups#new'
/ signups URL会忽略

,因为IT由

处理

资源:注册

创建所有路径 - 索引,显示,创建,新建,编辑,更新,销毁

以及&#39;注册&#39;使用它意味着注册索引操作。

尝试将其删除和/或读取导轨中的RESTful routes并应用它。