我已经在get类型的collection方法中定义了一个路由,但是它重定向以显示控制器的动作而不是merge_fields动作
resources :notification_templates do
collection do
get :merge_field_keys
end
end
所以它的路径是/notification_templates/merge_field_keys
现在notification_templates_controller
将其重定向到show method并将merge_field
作为id。
class NotificationTemplatesController < ApplicationController
def merge_field_keys
end
end
答案 0 :(得分:0)
您的方法名称为merge_field_keys
,其路线显示为merge_fields
。尝试更改其中一个
resources :notification_templates do
collection do
get :merge_field_key
end
end
OR
class NotificationTemplatesController < ApplicationController
def merge_fields
...
end
end
答案 1 :(得分: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]
答案 2 :(得分:0)
试试这些:
redirect_to:controller =&gt; &#39; notification_templates&#39;,:action =&gt; &#39; merge_field_keys&#39;