Rails 3 «новое» действие как страница индекса из-за формы - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть небольшое приложение, где страница указателя представляет собой форму, которая инструктирует пользователя о его электронной почте. Я изменил свой маршрут, так что 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, это даетмне ошибка "Не удалось найти действие 'index' для SignupsController".Было бы хорошо, если бы я создал действие 'index' и redirect_to root_path, чтобы я не получил "Индекс действия", который не может быть найден для SignupsController ", если бы я получил прямой доступ к http://localhost:3000/signups?Это правильный способ сделать это?

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

Спасибо!

J

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Причина, по которой http://localhost:3000/signups выдает ошибку «Не удалось найти индекс действия» для SignupsController », заключается в том, что:

Используются первые «совпавшие» маршруты.
Итак, все это:

match "/confirm", :to => "pages#confirm"
root :to => 'signups#new'

игнорируется URL-адресом / signups, потому что с ИТ-отделом

ресурсов: регистрация

, который создает все маршруты - индексировать, показывать, создавать, новые, редактировать, обновлять, уничтожать

и когда используется «регистрация», это подразумевает действие индекса регистрации.

Попробуйте удалить его и / или прочитать на RESTful маршрутах в рельсах и применить это.

1 голос
/ 07 декабря 2011

Сделайте что-то вроде этого:

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

Не используйте resources :signups

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...