2014-10-07 3 views
-1

Следующего моего routes.rbRails маршрут Перенаправление на другую точку зрения по умолчанию

Rails.application.routes.draw do 
    resources :admin do 
    post 'user_creation', on: :collection 
    end 
    get 'admin/user_creation' 
    resources :admin, :only => [:user_creation, :create, :new] 
end 

следующее моего контроллера

class AdminController < ApplicationController 
    def new 
    @dashboard_user = DashboardUser.new 
    end 
    def create 
    @dashboard_user = DashboardUser.new(dashboard_params) 
    @dashboard_user.save! 
    end 
    def user_creation 

    end 
    private 
    def dashboard_params 
    params.require(:dashboard_user).permit(:user_name, :password, :last_name, :first_name, :middle_name , :phone) 
    end 
end 

, то его просто .html.erb файл , что происходит, что когда я пытаюсь открыть ссылку admin/user_creation, она автоматически перенаправляется на файл show.html.erb

вывод граблиных маршрутов

rake routes 
        Prefix Verb URI Pattern     Controller#Action 
user_creation_admin_index POST /admin/user_creation(.:format) admin#user_creation 
       admin_index GET /admin(.:format)    admin#index 
          POST /admin(.:format)    admin#create 
       new_admin GET /admin/new(.:format)   admin#new 
       edit_admin GET /admin/:id/edit(.:format)  admin#edit 
        admin GET /admin/:id(.:format)   admin#show 
          PATCH /admin/:id(.:format)   admin#update 
          PUT /admin/:id(.:format)   admin#update 
          DELETE /admin/:id(.:format)   admin#destroy 
     admin_user_creation GET /admin/user_creation(.:format) admin#user_creation 
          POST /admin(.:format)    admin#create 
          GET /admin/new(.:format)   admin#new 
        root GET /       admin#new 

ответ

0

Ваш маршрут не выглядит хорошо. Всякий раз, когда мы пытаемся перейти на любой URL-адрес непосредственно из браузера, он рассматривает запрос как тип get. Файл маршрутов пытается найти маршрут сверху вниз. Вот почему он рассматривает /admin/user_creation как действие шоу admin_controller и user_creation как id для показа.

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

Rails.application.routes.draw do 
    resources :admin, :only => [:create, :new] do 
    post 'user_creation', on: :collection 
    get 'user_creation', on: :collection 
    end 
end 

Одна вещь с вышеуказанными маршрутами для маршрута нет маршрута. Теперь вы правильно перейдете на путь user_creation.

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

Rails.application.routes.draw do 
    resources :admin, :only => [:create, :new] do 
    get 'user_creation', on: :collection 
    end 
end 

, если вам нужно все действия по умолчанию, то:

Rails.application.routes.draw do 
    resources :admin do 
    get 'user_creation', on: :collection 
    end 
end 
+0

Спасибо, что сработал :) –

1

Вы нажав ссылку на URL , admin/user_creation Но ваш маршрут говорит, что это URL-адрес POST.

Его необходимо добавить как GET.

Rails.application.routes.draw do 
    resources :admin do 
    post 'user_creation', on: :collection 
    get 'user_creation', on: :collection 
    end 
    get 'admin/user_creation' 
    resources :admin, :only => [:user_creation, :create, :new] 
end 
+0

Я пытаюсь отправить данные, а затем перенаправить их на ту же страницу, поэтому я должен использовать пост правильно? –

+0

Да, если вы используете оба, то вам нужно объявить оба сообщения, получите – Debadatt

+0

, который суммирует его благодаря большому количеству :) –

Смежные вопросы