2016-06-15 3 views
0

Я определил маршруты в методе сбора типа получить, но его перенаправление, чтобы показать действие контроллера, а что merge_fields Действияколлекция маршрут типа ПОЛУЧИТЬ перенаправляет показать действие

resources :notification_templates do 
    collection do 
     get :merge_field_keys 
    end 
    end 

поэтому его путь /notification_templates/merge_field_keys

теперь notification_templates_controller перенаправляет его, чтобы показать метод, и принимает merge_field как id.

class NotificationTemplatesController < ApplicationController 

    def merge_field_keys 
    end 

end 
+0

Похоже, что это может быть что-то в вашем файле маршрутов, который находится где-то выше в файле. Можете ли вы разместить свои маршруты.rb? – hypern

ответ

0

Ваше имя метода merge_field_keys, где, как ваш маршрут говорит merge_fields. Попробуйте изменить один из них

resources :notification_templates do 
    collection do 
    get :merge_field_key 
    end 
end 

ИЛИ

class NotificationTemplatesController < ApplicationController 
    def merge_fields 
    ... 
    end 
end 
+0

Извините @kumar его ошибка при отправке вопроса имя метода и имя маршрута на самом деле – Prem

+0

И вы собираетесь на путь '/ notification_templates/merge_field_keys', а не'/notification_templates/merge_fields', правильно? – Kumar

+0

да .. спасибо за указание, что слишком – Prem

0

То, что вы сказали, не может произойти, если вы запустите rake routes вы найдете /notification_templates/merge_field_keys определяется до /notification_templates/:id, и при запросе от сервера Rails начать чтобы соответствовать первому пути, который равен merge_field_keys, и когда все не совпадают, он называет show действию и передает все после /notification_templates как id param.

Возможно, вы определили resources :notification_templates дважды, и у вас есть над чем вы упомянули, запустите rake routes и убедитесь, что и в случае, если вы даже не нужно показать действие, которое вы можете сделать:

resources :notification_templates, only: [:index, :create, :update, :destroy] do 
    collection do 
    get :merge_field_keys 
    end 
end 

и вы также можете удалить из этого массива, что вы не используете [:index, :show, :create, :update, :destroy]

0

Попробуйте эти:

redirect_to: контроллер => '', notification_templates: действие => 'merge_field_keys'

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