我有一个小应用程序,其中索引页面是一个指示用户输入电子邮件的表单,我已经更改了我的路由,以便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
谢谢!
Ĵ
答案 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并应用它。